+++ /dev/null
-XCOMM $XConsortium: Imakefile /main/4 1995/10/27 08:47:01 rswiston $
-#ifdef SunArchitecture
-.NO_PARALLEL:
-#endif
-
-#define IHaveSubdirs
-#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'
-
-#if BUILD_UNITY_1_ONLY
-SUBDIRS=wml uil xmbind
-#else
-SUBDIRS = wml mwm xmbind
-#endif
-
-/* Force a top path that works for external Motif subdirectories. */
-TOP = ../../cde/.
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-LintSubdirs($(SUBDIRS))
+++ /dev/null
-! $XConsortium: CDE /main/4 1995/07/17 10:28:16 drk $
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF
-! for the full copyright text.
-!
-!
-! HISTORY
-!
-! Bindings for CDE 1.0, generic keyboard
-!
-! This file does not correspond to any specific server, so it cannot
-! be accessed via xmbind.aliases. If you wish to use these bindings,
-! copy them into ~/.motifbind or use xmbind to load this file directly.
-
-osfActivate : <Key>KP_Enter, <Key>Execute
-osfAddMode : Shift<Key>F8
-osfBackSpace : <Key>BackSpace
-osfBeginLine : <Key>Home, <Key>Begin
-osfCancel : <Key>Escape, <Key>Cancel, Ctrl<Key>s
-osfClear : <Key>Clear
-osfCopy : Ctrl<Key>c, Ctrl<Key>Insert
-osfCut : Ctrl<Key>x, Shift<Key>Delete
-osfDelete : <Key>Delete
-osfDown : <Key>Down
-osfEndLine : <Key>End
-osfHelp : <Key>F1, <Key>Help
-osfInsert : <Key>Insert
-osfLeft : <Key>Left
-osfMenu : Shift<Key>F10, <Key>Menu
-osfMenuBar : <Key>F10, Shift<Key>Menu
-osfPageDown : <Key>Next
-osfPageUp : <Key>Prior
-osfPaste : Ctrl<Key>v, Shift<Key>Insert
-osfRight : <Key>Right
-osfSelect : <Key>Select
-osfSwitchDirection : Alt<Key>Return, Alt<Key>KP_Enter
-osfUndo : <Key>Undo
-osfUp : <Key>Up
+++ /dev/null
-XCOMM
-XCOMM @OSF_COPYRIGHT@
-XCOMM COPYRIGHT NOTICE
-XCOMM Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-XCOMM ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-XCOMM the full copyright text.
-XCOMM
-XCOMM
-XCOMM HISTORY
-XCOMM
-XCOMM $TOG: Imakefile /main/8 1997/07/02 17:51:43 samborn $
-INSTALLFLAGS = $(INSTINCFLAGS)
-
-FILES = \
- xmbind.alias \
- acorn \
- apollo \
- dec \
- dg_AViiON \
- doubleclick \
- hal \
- hitachi \
- hp \
- ibm \
- intergraph \
- intergraph17 \
- megatek \
- motorola \
- ncr_at \
- ncr_vt \
- pc \
- sgi \
- sni \
- sni_97801 \
- siemens_9733 \
- siemens_wx200 \
- sony \
- sun_mit \
- sun_news \
- tek
-
-
-all::
-
-InstallMultiple($(FILES),VirtualBindingsPath)
-
-depend::
-
+++ /dev/null
-/* $XConsortium: README /main/3 1996/07/15 13:55:02 drk $ */
-
-This directory contains a collection of sample ".motifbind" files:
-
-acorn
-apollo
-dec
-dg_AViiON
-doubleclick
-hitachi
-hp
-ibm
-intergraph17
-intergraph
-megatek
-motorola
-ncr_at
-ncr_vt
-sgi
-siemens_9733
-siemens_wx200
-sun_mit
-sun_news
-tek
-
-These files were provided by various vendors, though not necessarily
-the vendors whose hardware they apply to. Each file contains a set of
-keyboard bindings that is suggested for use on that particular
-server/hardware combination. These files should be used as examples
-of ~/.motifbind files to work from.
-
-By copying the appropriate file into the user's home directory and
-renaming it to ".motifbind", the bindings will be recognized and used
-when the Motif window manager is (re)started.
-These bindings will override any other default bindings except those
-initiated within a client application (using XtOverrideTranslations).
-
-These examples are provided, as is, only as a service to the vendors
-and users.
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: acorn /main/6 1995/07/14 09:19:28 drk $
-!
-!"Acorn Computers Ltd"
-! Acorn RISC iX versions 1.0->1.2 running on Acorn R140, R225, R260
-! (all national keyboard variants)
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine :Alt <Key>Right
-osfBeginLine :Alt <Key>Left
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>F1
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
-osfActivate : <Key>KP_Enter
-osfCopy : <Key>Select
-
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: apollo /main/6 1995/07/14 09:19:33 drk $
-!
-!"Apollo Computer Inc."
-!
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>apRightBar
-osfBeginLine : <Key>apLeftBar
-osfPageUp : <Key>apUpBox
-osfPageDown : <Key>apDownBox
-osfPageLeft : <Key>apLeftBox
-osfPageRight : <Key>apRightBox
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>apCharDel
-osfInsert : <Key>Select
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>Help
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
-osfCopy : <Key>apCopy
-osfCut : <Key>apCut
-osfPaste : <Key>apPaste
-osfUndo : <Key>Undo
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: dec /main/6 1995/07/14 09:19:39 drk $
-!
-!"DECWINDOWS DigitalEquipmentCorp."
-!
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine :Alt <Key>Right
-osfBeginLine :Alt <Key>Left
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>Delete
-osfDelete : <Key>DRemove
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>Help
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
-osfSelect : <Key>Select
-osfActivate : <Key>KP_Enter
-osfPrimaryPaste : <Key>F14
-osfQuickPaste : <Key>F17
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: dg_AViiON /main/6 1995/07/14 09:19:45 drk $
-!
-!"Data General Corporation Rev 04"
-! AViiON
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>End
-osfBeginLine : <Key>Home
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>F1
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: doubleclick /main/6 1995/07/14 09:19:51 drk $
-!
-!"Double Click Imaging, Inc. KeyX"
-! for the version of KeyX running on 386 AT bus compatibles.
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>End
-osfBeginLine : <Key>Home
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>F1
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
+++ /dev/null
-! $XConsortium: hal /main/4 1995/07/17 10:28:29 drk $
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-! HISTORY
-!
-!
-! "HaL" server for a Sun type 4 keyboard
-!
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>F33
-osfBeginLine : <Key>F27
-osfPageUp : <Key>F29
-osfPageDown : <Key>F35
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>Help
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
-osfCopy : <Key>F16
-osfCut : <Key>F20
-osfPaste : <Key>F18
-osfUndo : <Key>F14
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: hitachi /main/6 1995/07/14 09:19:58 drk $
-!
-!
-! Hitachi System 2050
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine :Alt <Key>Right
-osfBeginLine :Alt <Key>Left
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>F1
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: hp /main/7 1996/11/21 13:06:42 cde-hp $
-!
-!"Hewlett-Packard Company"
-!
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>End
-osfBeginLine : <Key>Home
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>F1
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
-osfSelect : <Key>Select
-osfClear : <Key>Clear
-osfUndo : <Key>Undo
-osfPrimaryPaste :Meta Ctrl <Key>Insert
-
-
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: ibm /main/6 1995/07/14 09:20:11 drk $
-!
-!"International Business Machines"
-! for AIX/PS2 and RS/6000 systems
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>End
-osfBeginLine : <Key>Home
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>F1
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: intergraph /main/6 1995/07/14 09:20:18 drk $
-!
-! Intergraph
-! with Delete & Backspace keys
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine :Alt <Key>Right
-osfBeginLine :Alt <Key>Left
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>Help
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: intergraph17 /main/6 1995/07/14 09:20:24 drk $
-!
-! Intergraph
-! with single Delete/Backspace keys (use F17 for Delete)
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine :Alt <Key>Right
-osfBeginLine :Alt <Key>Left
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>F17
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>Help
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: megatek /main/6 1995/07/14 09:20:29 drk $
-!
-!"Megatek Corporation"
-! Megatek X-Cellerator
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>R13
-osfBeginLine : <Key>F27
-osfPageUp : <Key>F29
-osfPageDown : <Key>F35
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>Help
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
-osfCopy : <Key>F16
-osfCut : <Key>F20
-osfPaste : <Key>F18
-osfUndo : <Key>F14
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: motorola /main/6 1995/07/14 09:20:35 drk $
-!
-!"Motorola Inc. (Microcomputer Division) "
-! (c) Copyright 1990 Motorola Inc.
-! Motorola provides these key bindings as is,
-! with no guarantees or warranties implied.
-! Motorola is under no obligation to support,
-! update, or extend these key bindings for
-! future releases.
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>End
-osfBeginLine : <Key>Home
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>F1
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: ncr_at /main/6 1995/07/14 09:20:41 drk $
-!
-! NCR XL Series X-Station
-! PC AT keyboard
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>End
-osfBeginLine : <Key>Home
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>F1
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
-osfActivate : <Key>KP_Enter
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: ncr_vt /main/6 1995/07/14 09:20:46 drk $
-!
-! NCR XL Series X-Station
-! VT 220 keyboard
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine :Alt <Key>Right
-osfBeginLine :Alt <Key>Left
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>Help
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
-osfSelect : <Key>Select
-osfActivate : <Key>KP_Enter
-osfQuickPaste : <Key>F17
-
-
+++ /dev/null
-! $XConsortium: pc /main/4 1995/07/17 10:28:38 drk $
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-! HISTORY
-
-! Generic OSF/Motif Style Guide bindings for PC keyboards
-
-osfActivate : <Key>KP_Enter
-osfCancel : <Key>Escape
-osfMenuBar : <Key>F10
-osfMenu : Shift <Key>F10
-osfHelp : <Key>F1
-
-osfBackSpace : <Key>BackSpace
-osfInsert : <Key>Insert
-osfDelete : <Key>Delete
-
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfPageLeft : Ctrl <Key>Prior
-osfPageRight : Ctrl <Key>Next
-osfEndLine : <Key>End
-osfBeginLine : <Key>Home
-
-osfLeft : <Key>Left
-osfRight : <Key>Right
-osfUp : <Key>Up
-osfDown : <Key>Down
-
-osfAddMode : Shift <Key>F8
-
-osfCut : Shift <Key>Delete
-osfCopy : Ctrl <Key>Insert
-osfPaste : Shift <Key>Insert
-
-osfPrimaryPaste :Meta Ctrl <Key>Insert
-
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: sgi /main/7 1995/07/14 09:20:51 drk $
-!
-!"Silicon Graphics Inc."
-!
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>End
-osfBeginLine : <Key>Home
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>F1
-osfActivate : <Key>KP_Enter
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: siemens_9733 /main/6 1995/07/14 09:20:56 drk $
-!
-!"Siemens Munich (SP-4's hacker-clan)"
-! Siemens 9733 system
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>End
-osfBeginLine : <Key>Home
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete_char
-osfInsert : <Key>Insert_char
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>Help
-osfMenu : <Key>Linefeed
-osfMenuBar : <Key>F10
-
-
-
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: siemens_wx200 /main/6 1995/07/14 09:21:02 drk $
-!
-!"Siemens Munich by SP-4's Hacker Crew"
-! Siemens WX200 system
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>Cancel
-osfBeginLine : <Key>Home
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete,<Key>F29
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>Help,<Key>F1
-osfActivate : <Key>KP_Enter
-osfMenu : <Key>Menu,Shift <Key>F10
-osfMenuBar : <Key>F10
-
-
-
+++ /dev/null
-! $XConsortium: sni /main/4 1995/07/17 10:28:46 drk $
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-! HISTORY
-!
-!
-! "Siemens Nixdorf Informationssysteme AG"
-! SNI MFII keyboard
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>End
-osfBeginLine : <Key>Home
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode : Shift <Key>F8
-osfHelp : <Key>F1
-osfActivate : <Key>KP_Enter
-osfMenu : Shift <Key>F10
-osfMenuBar : <Key>F10
+++ /dev/null
-! $XConsortium: sni_97801 /main/4 1995/07/17 10:29:04 drk $
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-! HISTORY
-!
-! "Siemens Nixdorf Informationssysteme AG (97801)"
-! SNI 97801 keyboard
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>Cancel,<Key>End
-osfBeginLine : <Key>Home
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete,<Key>F29
-osfInsert : <Key>Insert
-osfAddMode : Shift <Key>F8
-osfHelp : <Key>Help,<Key>F1
-osfActivate : <Key>KP_Enter
-osfMenu : <Key>Menu,Shift <Key>F10
-osfMenuBar : <Key>F10
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: sony /main/5 1995/07/14 09:21:08 drk $
-!
-!"Sony Corporation"
-!
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine :Alt <Key>Right
-osfBeginLine :Alt <Key>Left
-osfPageUp :Alt <Key>Up
-osfPageDown :Alt <Key>Down
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>F5
-osfAddMode :Shift <Key>F18
-osfHelp : <Key>F1
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
-osfSelect : <Key>Select
-osfActivate : <Key>KP_Enter
+++ /dev/null
-!
-!
-! $Id: sun /main/3 1999/07/14 10:48:40 mgreess $
-!
-! "Sun Microsystems, Inc."
-osfActivate : <Key>KP_Enter
-osfCancel : <Key>Escape
-osfHelp : <Key>Help,<Key>F1
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
-
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-
-osfBeginLine : <Key>Home
-osfEndLine : <Key>End
-
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfUndo : <Key>Undo
-osfAddMode :Shift <Key>F8
-osfCopy : <Key>SunCopy
-osfCut : <Key>SunCut
-osfPaste : <Key>SunPaste
-
+++ /dev/null
-!
-!
-! $Id: sun_at /main/2 1999/03/26 17:09:14 samborn $
-!
-! "Sun Microsystems, Inc."
-osfActivate : <Key>KP_Enter
-osfCancel : <Key>Escape
-osfHelp : <Key>F1
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
-
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-
-osfBeginLine : <Key>Home
-osfEndLine : <Key>End
-
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: tek /main/6 1995/07/14 09:21:24 drk $
-!
-!"Tektronix, Inc."
-!
-!
-
-osfCancel : <Key>Escape
-osfLeft : <Key>Left
-osfUp : <Key>Up
-osfRight : <Key>Right
-osfDown : <Key>Down
-osfEndLine : <Key>End
-osfBeginLine : <Key>Home
-osfPageUp : <Key>Prior
-osfPageDown : <Key>Next
-osfBackSpace : <Key>BackSpace
-osfDelete : <Key>Delete
-osfInsert : <Key>Insert
-osfAddMode :Shift <Key>F8
-osfHelp : <Key>F1
-osfMenu :Shift <Key>F10
-osfMenuBar : <Key>F10
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $TOG: xmbind.alias /main/6 1999/03/26 17:03:23 samborn $
-!
-!
-! bindings alias file
-!
-! format:
-! "<ServerVendor(display)>[<space><VendorRelease(display)>]" bindings_file
-!
-
-"Acorn Computers Ltd" acorn
-"Apollo Computer Inc." apollo
-"DECWINDOWS DigitalEquipmentCorp." dec
-"DECWINDOWS DigitalEquipmentCorporation UWS2.2" dec
-"Data General Corporation Rev 04" dg_AViiON
-"Double Click Imaging, Inc. KeyX" doubleclick
-"HaL" hal
-"Hewlett-Packard Company" hp
-! "Hitachi?" hitachi
-"International Business Machines" ibm
-"Intergraph Corporation" intergraph
-! "Intergraph Corporation ?" intergraph17
-"Megatek Corporation" megatek
-"Motorola Inc. (Microcomputer Division) " motorola
-! "NCR?" ncr_at
-! "NCR?" ncr_vt
-! "?" (Generic PC keyboard bindings) pc
-"Silicon Graphics Inc." sgi
-"Silicon Graphics" sgi
-"Siemens Nixdorf Informationssysteme AG" sni
-"Siemens Nixdorf Informationssysteme AG (97801)" sni_97801
-"Siemens Munich by SP-4's Hacker Crew" siemens_wx200
-"Siemens Munich (SP-4's hacker-clan)" siemens_9733
-"Sony Corporation" sony
-"X11/NeWS - Sun Microsystems Inc." sun
-! sun: for Displays with Type-4/Type-5 keyboards
-! sun_at: for Displays with PC AT style keyboards
-"Sun Microsystems, Inc." sun
-! "Sun Microsystems, Inc." sun_at
-"Tektronix, Inc." tek
+++ /dev/null
-XCOMM
-XCOMM @OSF_COPYRIGHT@
-XCOMM COPYRIGHT NOTICE
-XCOMM Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-XCOMM ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-XCOMM the full copyright text.
-XCOMM
-XCOMM
-XCOMM HISTORY
-XCOMM
-XCOMM $TOG: Imakefile /main/23 1997/07/03 12:32:45 samborn $
-
-#define DoNormalLib NormalLibUil
-#define DoSharedLib SharedLibUil
-#define DoDebugLib DebugLibUil
-#define DoProfileLib ProfileLibUil
-#define LibName Uil
-#define SoRev SOUILREV
-#define HasSharedData NO
-#define IncSubdir uil
-
-#ifdef SharedUilReqs
-REQUIREDLIBS = SharedUilReqs
-#endif
-
-INCLUDES = -I. -I$(INCLUDESRC) -I$(MINCLUDESRC) -I$(MLIBSRC) -I$(MTOP)/include
-DEPLIBS2 = MrmClientDepLibs
-LOCAL_LIBRARIES = MrmClientLibs
-LINTLIBS = $(LINTMRESOURCE) $(LINTXMLIB) $(LINTXMTOOL) $(LINTXLIB)
-
-COMMON_SRC = UilCmd.c UilDiags.c UilKeyTab.c UilLexAna.c \
- UilLexPars.c UilLstLst.c UilP2Out.c UilP2Reslv.c \
- UilSarComp.c UilSarExp.c UilSarInc.c UilSarMod.c \
- UilSarObj.c UilSarProc.c UilSarVal.c UilSrcSrc.c \
- UilSymNam.c UilSymStor.c UilData.c \
- UilLstMac.c UilSemVal.c UilSemCSet.c UilDB.c
-
-SRCS = $(COMMON_SRC) UilParser.c
-SRCS2 = $(COMMON_SRC) UilMain.c
-
-COMMON_OBJ = UilCmd.o UilDiags.o UilKeyTab.o UilLexAna.o \
- UilLexPars.o UilLstLst.o UilP2Out.o UilP2Reslv.o \
- UilSarComp.o UilSarExp.o UilSarInc.o UilSarMod.o \
- UilSarObj.o UilSarProc.o UilSarVal.o UilSrcSrc.o \
- UilSymNam.o UilSymStor.o UilData.o \
- UilLstMac.o UilSemVal.o UilSemCSet.o UilDB.o
-
-OBJS = $(COMMON_OBJ) UilParser.o
-OBJS2 = $(COMMON_OBJ) UilMain.o
-
-HEADERS = Uil.h UilSymGl.h UilDBDef.h UilSymDef.h \
- UilDef.h XmAppl.uil
-
-#include <Library.tmpl>
-
-PROGRAMS = uil
-
-AllTarget($(PROGRAMS))
-
-MComplexProgramTarget_2(uil,$(LOCAL_LIBRARIES),NullParameter)
-
-SpecialLibObjectRule(UilDB.o,NullParameter,-DLIBDIR='"'$(XPROJECTROOT)/lib/X11'"' -DINCDIR='"'$(XPROJECTROOT)/include/X11'"')
-
-LinkFile(UilParser.c,UilMain.c)
-SpecialLibObjectRule(UilParser.o,NullParameter,-DCALLABLE)
-
-
-DependTarget3($(COMMON_SRC),UilMain.c,UilParser.c)
-
-#ifdef UseVista
-VistaMapRule(uil.M,libUil.a)
-#endif
-
-MessageCatalogRule(Uil)
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: Uil.h /main/11 1995/07/14 09:32:19 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file defines the set of definitions for use with
-** UIL compiler callable interface.
-**
-**--
-**/
-
-#ifndef Uil_h
-#define Uil_h
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-
-
-/*
-**
-** Definition of Compiler Severity Statuses
-**
-*/
-
-typedef unsigned int Uil_status_type;
-#define Uil_k_min_status 0
-#define Uil_k_success_status 0
-#define Uil_k_info_status 1
-#define Uil_k_warning_status 2
-#define Uil_k_error_status 3
-#define Uil_k_severe_status 4
-#define Uil_k_max_status 4
-
-/*
-**
-*/
-
-typedef char (*string_array)[];
-#define CEIL(a,b) ((a) < (b) ? (a) : (b))
-
-
-/*
-** Uil_command_type -- Input which describes how/what to compile.
-*/
-
-typedef struct _Uil_command_type
-{
- char *source_file; /* single source to compile */
- char *resource_file; /* name of output file */
- char *listing_file; /* name of listing file */
- unsigned int include_dir_count; /* number of directories in */
- /* include_dir array */
- char **include_dir; /* directory to search for */
- /* includes files */
- unsigned listing_file_flag: 1; /* produce a listing */
- unsigned resource_file_flag: 1; /* generate UID output */
- unsigned machine_code_flag : 1; /* generate machine code */
- unsigned report_info_msg_flag: 1;/* report info messages */
- unsigned report_warn_msg_flag: 1;/* report warnings */
- unsigned parse_tree_flag: 1; /* generate parse tree */
- unsigned issue_summary: 1; /* issue diagnostics summary */
-
- unsigned int status_update_delay; /* Number of times a status */
- /* point is passed before */
- /* calling statusCB routine */
- /* 0 means called every time */
- char *database; /* name of database file */
- unsigned database_flag: 1; /* read a new database file */
- unsigned use_setlocale_flag: 1; /* Enable calls to setlocale */
-} Uil_command_type;
-
-
-
-/*
-** Uil_compile_desc_type -- Output information about the compilation including
-** the compiler_version, data_structure_version, parse tree, and error counts.
-*/
-
-typedef struct _Uil_comp_desc
-{
- unsigned int compiler_version; /* version number of Compiler */
- unsigned int data_version; /* version number of structures */
- char *parse_tree_root; /* parse tree output */
- unsigned int message_count[Uil_k_max_status+1];
- /* array of severity counts */
-} Uil_compile_desc_type;
-
-
-
-
-/*
-** Uil_continue_type -- A value returned from a Uil callback routine which
-** allows the application to specify whether to terminate or continue the
-** compilation.
-*/
-
-typedef unsigned int Uil_continue_type;
-#define Uil_k_terminate 0
-#define Uil_k_continue 1
-
-
-
-/*
-**
-** Entry Points
-**
-*/
-
-#ifndef _ARGUMENTS
-#define _ARGUMENTS(arglist) arglist
-#endif
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-extern Uil_status_type Uil
- _ARGUMENTS((
- Uil_command_type *command_desc ,
- Uil_compile_desc_type *compile_desc ,
- Uil_continue_type (*message_cb )(),
- char *message_data ,
- Uil_continue_type (*status_cb )(),
- char *status_data ));
-
-
-#if defined(__cplusplus) || defined(c_plusplus)
-}
-#endif
-
-#undef _ARGUMENTS
-
-
-#endif /* Uil_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-$ $XConsortium: Uil.msg /main/4 1996/08/19 11:53:43 pascale $
-$set UIL_SET1
-
-UIL_0 duplicate option \"%s\" was ignored
-UIL_1 unknown option \"%s\" was ignored
-UIL_2 additional UIL source file: %s was ignored
-UIL_3 error opening source file: %s
-UIL_4 error reading next line of source file: %s
-UIL_5 Internal error: %s
-UIL_6 line truncated at %d characters
-UIL_7 value of %s is out of range %s
-UIL_8 %s not terminated %s
-UIL_9 unprintable character \\%d\\ ignored
-UIL_10 unknown sequence \"%s\" ignored
-UIL_11 unknown escape sequence \"\\%c\" - \\ ignored
-UIL_12 name exceeds %d characters - truncated to: %s
-UIL_13 compiler ran out of virtual memory
-UIL_14 unexpected %s token found - parsing resumes after \"%c\"
-UIL_15 %s %s must be defined before this reference
-UIL_16 context requires a %s - %s was specified
-UIL_17 %s is not implemented yet
-UIL_18 found %s value when expecting %s value
-UIL_19 the %s %s is not supported for the %s object
-UIL_20 this %s %s supersedes a previous definition in this %s %s
-UIL_21 name %s previously defined as %s
-UIL_22 value used in this context must be private
-UIL_23 procedure %s was previously declared with %d arguments
-UIL_24 found %s value - procedure %s argument must be %s value
-UIL_25 found %s %s when expecting %s %s
-UIL_26 %s %s was never defined
-UIL_27 %s %s already specified for this %s %s
-UIL_28 %s item not allowed in %s %s
-UIL_29 compilation terminated - please fix previous errors
-UIL_30 internal error - please submit defect report
-UIL_31
-UIL_32 %s missing following \"%s\" option
-UIL_33 error opening listing file: %s
-UIL_34 error writing to listing file: %s
-UIL_35 invalid module structure - check UIL module syntax
-UIL_36 too many source files open: %s
-UIL_37 source line contains a null character
-UIL_38 errors: %d warnings: %d informationals: %d
-UIL_39 error opening UID file: %s
-UIL_40 no UID file was produced
-UIL_41 creation procedure is not supported by the %s widget
-UIL_42 creation procedure is not allowed in a %s widget reference
-UIL_43 creation procedure is required in a %s widget declaration
-UIL_44 a NULL character in a string is not supported
-UIL_45 widget %s is part of a circular definition
-UIL_46 no source file specified
-UIL_47 %s %s supports only a single %s %s
-UIL_48 %s widget supports only a single control
-UIL_49 unknown character set
-UIL_50 place names clause before other module clauses
-UIL_51 color letter string must be a single character
-UIL_52 color letter used for prior color in this table
-UIL_53 row %d must have same width as row 1
-UIL_54 row %d, column %d: letter \"%c\" not in color table
-UIL_55 too many %ss in %s, limit is %d
-UIL_56 Subqualifier not allowed with negated qualifier
-UIL_57 %s gadget is not supported - %s widget will be used instead
-UIL_58 %s type is not valid for %s
-UIL_59 support for this character set may be removed in a future release
-UIL_60 the %s constraint is not supported for the %s %s
-UIL_61 too many \"%s\" options, limit is %d
-UIL_62 error closing source file: %s
-UIL_63 the %s value is circularly defined
-UIL_64 overriding built-in name %s
-UIL_65 the %s argument does not support enumerated values
-UIL_66 the %s argument does not support the %s enumerated value
-UIL_67 $LANG contains an unknown character set
-UIL_68 the %s object's controls hierarchy contains a reference to itself
-UIL_69 value %s is too large for context buffer
-UIL_70 forward referencing is not allowed for %s
-UIL_71 cannot convert %s type to %s type
-UIL_72 %s is invalid
-UIL_V2_73 error reading binary database
-UIL_V2_74 binary database compiled with a future version
-UIL_V2_75 error opening database file: %s
-UIL_V2_76 error writing UID file: %s
-UIL_V2_77 '%s' is an unknown Toolkit class record name
-UIL_78 invalid include file name
-UIL_V2_79 incompatible unit types for arithmetic operation
-UIL_V2_80 %s used as charset name; %s used as charset component
-
-$set UIL_VALUES
-UIL_VAL_0 ** error **
-UIL_VAL_1 ** unknown **
-
-$set UIL_SET_MISC
-
-UIL_INF Info:
-UIL_WAR Warning:
-UIL_ERR Error:
-UIL_SEV Severe:
-UIL_MISC_0 \t\t line: %d file: %s
-UIL_MISC_1 \t\t line: %d position: %d file: %s
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: UilCmd.c /main/11 1995/07/14 09:32:29 drk $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** Command line interpreter for the
-**
-**--
-**/
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-
-#include "UilDefI.h"
-#include "UilCmdDef.h"
-
-
-/*
-**
-** GLOBAL DECLARATIONS
-**
-**/
-
-externaldef(uil_comp_glbl) cmd_command_line_type Uil_cmd_z_command;
-
-\f
-
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure parses the command line and places the
-** results of the parse in the global structure "Uil_cmd_z_command".
-**
-** FORMAL PARAMETERS:
-**
-** l_arg_count: number of command arguments
-** rac_arg_value: array of pointers to null terminated character strings
-** each of which is one of the command line arguments
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** Uil_cmd_z_command: respository for command line info
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** Uil_cmd_z_command is set
-**
-**--
-**/
-void cmd_decode_command_line( l_arg_count, rac_arg_value )
-int l_arg_count;
-char *rac_arg_value[ ];
-
-{
- static char *include_list [Uil_k_max_include_dir_count];
- int i;
-
- Uil_cmd_z_command.ac_source_file = NULL;
- Uil_cmd_z_command.ac_resource_file = NULL;
- Uil_cmd_z_command.ac_listing_file = NULL;
- Uil_cmd_z_command.include_dir_count = 0;
- Uil_cmd_z_command.ac_include_dir = (char **)include_list;
- Uil_cmd_z_command.v_resource_file = TRUE;
- Uil_cmd_z_command.v_listing_file = FALSE;
- Uil_cmd_z_command.v_show_machine_code = FALSE;
- Uil_cmd_z_command.v_report_info_msg = TRUE;
- Uil_cmd_z_command.v_report_warn_msg = TRUE;
- Uil_cmd_z_command.v_parse_tree = FALSE;
- Uil_cmd_z_command.v_use_setlocale = FALSE;
- Uil_cmd_z_command.status_update_delay = 0;
- Uil_cmd_z_command.message_cb = (Uil_continue_type(*)())NULL;
- Uil_cmd_z_command.status_cb = (Uil_continue_type(*)())NULL;
- Uil_cmd_z_command.ac_database = NULL;
- Uil_cmd_z_command.v_database = FALSE;
-
-#if debug_version
- uil_v_dump_tokens = FALSE;
- uil_v_dump_symbols = FALSE;
-#endif
-
- /* traverse the options on the command line */
-
- for (i = 1; i < l_arg_count; i++)
- {
- /* check for an output file */
-
- if ( strcmp("-o", rac_arg_value[ i ]) == 0 )
- {
- /* the next argument is the output file name */
-
- /* check next field is not an option */
-
- if (((i+1) >= l_arg_count) ||
- ( '-' == rac_arg_value[ i+1 ][ 0 ] ))
- {
- diag_issue_diagnostic
- ( d_miss_opt_arg,
- diag_k_no_source, diag_k_no_column,
- rac_arg_value[ i ],
- "output file"
- );
- continue;
- }
-
- if (Uil_cmd_z_command.ac_resource_file == NULL)
- Uil_cmd_z_command.ac_resource_file = rac_arg_value[ i+1 ];
- else
- diag_issue_diagnostic
- ( d_dupl_opt,
- diag_k_no_source, diag_k_no_column,
- rac_arg_value[ i ]
- );
- i = i + 1;
- }
-
- /* check for a binary database file */
-
- else if ( strcmp("-wmd", rac_arg_value[ i ]) == 0 )
- {
- /* the next argument is the binary database file name */
-
- /* check next field is not an option */
-
- if (((i+1) >= l_arg_count) ||
- ( '-' == rac_arg_value[ i+1 ][ 0 ] ))
- {
- diag_issue_diagnostic
- ( d_miss_opt_arg,
- diag_k_no_source, diag_k_no_column,
- rac_arg_value[ i ],
- "binary database file"
- );
- continue;
- }
-
- if (!Uil_cmd_z_command.v_database)
- {
- Uil_cmd_z_command.v_database = TRUE;
- Uil_cmd_z_command.ac_database = rac_arg_value[ i+1 ];
- }
- else
- diag_issue_diagnostic
- ( d_dupl_opt,
- diag_k_no_source, diag_k_no_column,
- rac_arg_value[ i ]
- );
- i = i + 1;
- }
-
- /* check for an listing file */
-
- else if ( strcmp("-v", rac_arg_value[ i ]) == 0 )
- {
- /* the next argument is the listing file name */
-
- /* check next field is not an option */
-
- if (((i+1) >= l_arg_count) ||
- ( '-' == rac_arg_value[ i+1 ][ 0 ] ))
- {
- diag_issue_diagnostic
- ( d_miss_opt_arg,
- diag_k_no_source, diag_k_no_column,
- rac_arg_value[ i ],
- "listing file"
- );
- continue;
- }
-
- if (!Uil_cmd_z_command.v_listing_file)
- {
- Uil_cmd_z_command.v_listing_file = TRUE;
- Uil_cmd_z_command.ac_listing_file = rac_arg_value[ i+1 ];
- }
- else
- diag_issue_diagnostic
- ( d_dupl_opt,
- diag_k_no_source, diag_k_no_column,
- rac_arg_value[ i ]
- );
- i = i + 1;
- }
-
- /* check for the machine code option */
-
- else if ( strcmp("-m", rac_arg_value[ i ]) == 0 )
- {
- Uil_cmd_z_command.v_show_machine_code = TRUE;
- }
-
- /* check if warnings are to be supressed */
-
- else if ( strcmp("-w", rac_arg_value[ i ]) == 0 )
- {
- Uil_cmd_z_command.v_report_info_msg = FALSE;
- Uil_cmd_z_command.v_report_warn_msg = FALSE;
- }
-
- /* check if setlocale is to be enabled */
-
- else if ( strcmp("-s", rac_arg_value[ i ]) == 0 )
- {
- Uil_cmd_z_command.v_use_setlocale = TRUE;
- }
-
- /* check for an unexpected option */
-
- else if ( '-' == rac_arg_value[ i ][ 0 ] )
- {
-
- /* check for an include directory */
-
- if ( 'I' == rac_arg_value[ i ][ 1 ] )
- {
- if (Uil_cmd_z_command.include_dir_count < Uil_k_max_include_dir_count)
-
- include_list[Uil_cmd_z_command.include_dir_count++] =
- & rac_arg_value[i] [2];
- else
- diag_issue_diagnostic
- ( d_too_many_dirs,
- diag_k_no_source, diag_k_no_column,
- rac_arg_value[ i ], Uil_k_max_include_dir_count
- );
- } else
- {
- diag_issue_diagnostic
- ( d_unknown_opt,
- diag_k_no_source, diag_k_no_column,
- rac_arg_value[ i ]
- );
- }
- }
-
- /* assume it is a UIL source file specification
- * validation of the file spec is done when file is opened */
-
- else
- {
- if (Uil_cmd_z_command.ac_source_file == NULL)
- Uil_cmd_z_command.ac_source_file = rac_arg_value[ i ];
- else
- diag_issue_diagnostic
- ( d_add_source,
- diag_k_no_source, diag_k_no_column,
- rac_arg_value[ i ]
- );
- }
- }
-
- /*
- ** Check for a source file - otherwise issue a diagnostic.
- */
-
- if (Uil_cmd_z_command.ac_source_file == NULL)
- diag_issue_diagnostic
- ( d_no_source, diag_k_no_source, diag_k_no_column );
-
- if (Uil_cmd_z_command.ac_resource_file == NULL)
- {
- Uil_cmd_z_command.ac_resource_file = XtMalloc (strlen ("a.uid") + 1);
- strcpy (Uil_cmd_z_command.ac_resource_file,"a.uid");
- }
-
- /*
- ** Machine code listing only makes sense if listing is set.
- */
-
- Uil_cmd_z_command.v_show_machine_code =
- ( Uil_cmd_z_command.v_listing_file &
- Uil_cmd_z_command.v_show_machine_code);
-}
-
-\f
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilCmdDef.h /main/10 1995/07/14 09:32:45 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file defines the interface to the UIL command line
-** processing.
-**
-**--
-**/
-
-#ifndef UilCmdDef_h
-#define UilCmdDef_h
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-
-typedef struct
-{
- char *ac_source_file;
- char *ac_resource_file;
- char *ac_listing_file;
- unsigned int include_dir_count; /* number of directories in */
- /* ac_include_dir array */
- char **ac_include_dir; /* pointer to array of */
- /* directories to search for */
- /* includes in */
- unsigned v_listing_file: 1;
- unsigned v_resource_file: 1;
- unsigned v_show_machine_code: 1;
- unsigned v_report_info_msg: 1;
- unsigned v_report_warn_msg: 1;
- unsigned v_parse_tree: 1; /* generate parse tree */
- unsigned v_issue_summary: 1;
-
- unsigned int status_update_delay; /* Number of times a status */
- /* point is passed before */
- /* calling statusCB routine */
- /* 0 means called every time */
- Uil_continue_type (*message_cb)();
- char *message_data;
- Uil_continue_type (*status_cb)();
- char *status_data;
- unsigned v_use_setlocale: 1; /* Allow localized strings */
- char *ac_database;
- unsigned v_database: 1;
-} cmd_command_line_type;
-
-#endif /* UilCmdDef_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilCompGl.h /main/10 1995/07/14 09:32:57 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file contains external declarations of all Uil
-** compiler globals excluding those which define the recognized
-** language which are declared in UilSymGl.h
-**
-**--
-**/
-
-#ifndef UilCompGl_h
-#define UilCompGl_h
-
-#include <setjmp.h>
-
-/*
- * Defined in UilCmd.c
- */
-externalref cmd_command_line_type Uil_cmd_z_command;
-
-/*
- * Defined in UilData
- */
-externalref boolean uil_v_case_sensitive;
-externalref jmp_buf uil_az_error_env_block;
-externalref boolean uil_az_error_env_valid;
-#if debug_version
-externalref boolean uil_v_dump_tokens;
-externalref boolean uil_v_dump_symbols;
-#endif
-externalref status uil_l_compile_status;
-externalref Uil_compile_desc_type *Uil_compile_desc_ptr;
-externalref int Uil_percent_complete;
-externalref int Uil_lines_processed;
-externalref char *Uil_current_file;
-
-/*
- * Defined in UilDiags
- */
-externalref int Uil_message_count[];
-
-/*
- * Defined in UilLexAna
- */
-externalref int Uil_lex_l_user_default_charset;
-externalref sym_value_entry_type *Uil_lex_az_charset_entry;
-externalref int Uil_lex_l_charset_specified;
-externalref int Uil_lex_l_localized;
-externalref int Uil_lex_l_literal_charset;
-externalref sym_value_entry_type *Uil_lex_az_literal_charset;
-externalref char *comment_text;
-externalref int comment_size;
-/* % Complete */
-externalref int Uil_characters_read;
-
-/*
- * Defined in UilLstLst
- */
-externalref char Uil_lst_c_title2[];
-
-/*
- * Defined in UilP2Out
- */
-externalref IDBFile out_az_idbfile_id;
-
-/*
- * Defined in UilSarMod
- */
-externalref src_source_record_type *src_az_module_source_record;
-externalref unsigned short int *uil_urm_variant;
-externalref unsigned short int *uil_arg_compr;
-externalref unsigned short int *uil_reas_compr;
-externalref unsigned short int *uil_widget_compr;
-externalref unsigned short int *uil_child_compr;
-
-/*
- * Defined in UilSrcSrc
- */
-externalref src_source_buffer_type *src_az_current_source_buffer;
-externalref src_source_buffer_type *src_az_avail_source_buffer;
-externalref src_message_item_type *src_az_orphan_messages;
-externalref src_source_record_type *src_az_current_source_record;
-externalref src_source_record_type *src_az_first_source_record;
-externalref uil_fcb_type *src_az_source_file_table[];
-externalref int src_l_last_source_file_number;
-/* %COMPLETE */
-externalref long Uil_file_size;
-
-/*
- * Defined in UilSymStor
- */
-externalref sym_name_entry_type *sym_az_hash_table[];
-externalref sym_value_entry_type *sym_az_error_value_entry;
-externalref sym_external_def_entry_type *sym_az_external_def_chain;
-externalref sym_forward_ref_entry_type *sym_az_forward_ref_chain;
-externalref sym_val_forward_ref_entry_type *sym_az_val_forward_ref_chain;
-externalref sym_module_entry_type *sym_az_module_entry;
-externalref sym_root_entry_type *sym_az_root_entry;
-externalref sym_section_entry_type *sym_az_current_section_entry;
-externalref sym_entry_type *sym_az_entry_list_header;
-externalref URMPointerListPtr sym_az_allocated_nodes;
-externalref URMPointerListPtr sym_az_freed_nodes;
-
-#endif /* UilCompGl_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: UilDB.c /main/11 1996/11/21 20:03:11 drk $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-
-/*
- *++
- * FACILITY:
- *
- * UIL Bindary Database :
- *
- * ABSTRACT:
- *
- *--
- */
-
-/*
- * This file contains routines which change the internal tables of UIL based on
- * a binary data base parameter in the command line
- */
-
-
-/*
- *
- * INCLUDE FILES
- *
- */
-
-#ifndef X_NOT_STDC_ENV
-#include <stdlib.h>
-#include <unistd.h>
-#endif
-
-#include <Mrm/MrmAppl.h>
-#include <Mrm/Mrm.h>
-
-#include "UilDefI.h"
-
-#define X_INCLUDE_PWD_H
-#define XOS_USE_XT_LOCKING
-#include <X11/Xos_r.h>
-#include <stdio.h>
-
-/*
- *
- * TABLE OF CONTENTS
- *
- *
- */
-
-
-/*
- *
- * DEFINE and MACRO DEFINITIONS
- *
- */
-#define _check_read( __number_returned ) \
- if (( (__number_returned) != 1) || (feof(dbfile)) || (ferror(dbfile)) ) \
- { diag_issue_diagnostic( d_bad_database, diag_k_no_source, diag_k_no_column ); }
-
-
-
-
-/*
- *
- * EXTERNAL VARIABLE DECLARATIONS
- *
- */
-
-/*
- *
- * GLOBAL VARIABLE DECLARATIONS
- *
- */
-
-
-/*
- *
- * OWN VARIABLE DECLARATIONS
- *
- */
-static FILE *dbfile;
-static int num_bits;
-\f
-void db_incorporate()
-
-/*
- *++
- *
- * PROCEDURE DESCRIPTION:
- *
- * This routine incorporate the binary database passed in the command line.
- *
- *
- * FORMAL PARAMETERS:
- *
- * IMPLICIT INPUTS:
- *
- * IMPLICIT OUTPUTS:
- *
- * FUNCTION VALUE:
- *
- * SIDE EFFECTS:
- *
- *--
- */
-
-/*
- * External Functions
- */
-
-/*
- * Local variables
- */
-{
- int return_num_items;
- _db_header header;
- _db_globals globals;
-
- db_open_file();
-
- return_num_items = fread (&globals, sizeof(_db_globals), 1, dbfile);
- _check_read (return_num_items);
-
- /*
- * Some heuristics to see if this is a reasonable database.
- * The magic numbers are about 10 times as big as the DXm database
- * for DECWindows V3. The diagnostic does a fatal exit.
- */
- if ( globals.uil_max_arg>5000 ||
- globals.uil_max_charset>200 ||
- globals.charset_lang_table_max>1000 ||
- globals.uil_max_object>500 ||
- globals.uil_max_reason>1000 ||
- globals.uil_max_enumval>3000 ||
- globals.uil_max_enumset>1000 ||
- globals.key_k_keyword_count>10000 ||
- globals.key_k_keyword_max_length>200 ||
- globals.uil_max_child>250)
- diag_issue_diagnostic (d_bad_database,
- diag_k_no_source,
- diag_k_no_column);
-
- uil_max_arg = globals.uil_max_arg ;
- uil_max_charset = globals.uil_max_charset ;
- charset_lang_table_max = globals.charset_lang_table_max ;
- uil_max_object = globals.uil_max_object ;
- uil_max_reason = globals.uil_max_reason ;
- uil_max_enumval = globals.uil_max_enumval ;
- uil_max_enumset = globals.uil_max_enumset ;
- key_k_keyword_count = globals.key_k_keyword_count ;
- key_k_keyword_max_length = globals.key_k_keyword_max_length ;
- uil_max_child = globals.uil_max_child;
- num_bits = (uil_max_object +7) / 8;
-
- if (globals.version > DB_Compiled_Version)
- diag_issue_diagnostic( d_future_version, diag_k_no_source, diag_k_no_column );
-
- for (;;)
- {
- return_num_items = fread (&header, sizeof(_db_header), 1, dbfile);
- if (feof(dbfile)) break;
- _check_read (return_num_items);
- switch (header.table_id)
- {
- case Constraint_Tab:
- constraint_tab = (unsigned char *) XtMalloc (header.table_size);
- return_num_items = fread (constraint_tab,
- sizeof(unsigned char) * header.num_items,
- 1, dbfile);
- _check_read (return_num_items);
- break;
- case Argument_Type_Table_Value:
- /*
- * NOTE: The first entry is not used but we copy it anyway
- */
- argument_type_table = (unsigned char *) XtMalloc (header.table_size);
- return_num_items = fread (argument_type_table,
- sizeof(unsigned char) * header.num_items,
- 1, dbfile);
- _check_read (return_num_items);
- break;
- case Child_Class_Table:
- /*
- * NOTE: The first entry is not used but we copy it anyway
- */
- child_class_table =
- (unsigned char *) XtMalloc (header.table_size);
- return_num_items =
- fread (child_class_table,
- sizeof(unsigned char) * header.num_items, 1, dbfile);
- _check_read (return_num_items);
- break;
- case Charset_Wrdirection_Table:
- charset_writing_direction_table = (unsigned char *) XtMalloc (header.table_size);
- return_num_items = fread (charset_writing_direction_table,
- sizeof(unsigned char) * header.num_items,
- 1, dbfile);
- _check_read (return_num_items);
- break;
- case Charset_Parsdirection_Table:
- charset_parsing_direction_table = (unsigned char *) XtMalloc (header.table_size);
- return_num_items = fread (charset_parsing_direction_table,
- sizeof(unsigned char) * header.num_items,
- 1, dbfile);
- _check_read (return_num_items);
- break;
- case Charset_Charsize_Table:
- charset_character_size_table = (unsigned char *) XtMalloc (header.table_size);
- return_num_items = fread (charset_character_size_table,
- sizeof(unsigned char) * header.num_items,
- 1, dbfile);
- _check_read (return_num_items);
- break;
- case Key_Table:
- case Key_Table_Case_Ins:
- db_read_ints_and_string (&header);
- break;
- case Allowed_Argument_Table:
- case Allowed_Child_Table:
- case Allowed_Control_Table:
- case Allowed_Reason_Table:
- db_read_char_table (&header);
- break;
- case Charset_Xmstring_Names_Table:
- case Charset_Lang_Names_Table:
- case Uil_Widget_Names:
- case Uil_Children_Names:
- case Uil_Argument_Names:
- case Uil_Reason_Names:
- case Uil_Enumval_names:
- case Uil_Charset_Names:
- case Uil_Widget_Funcs:
- case Uil_Argument_Toolkit_Names:
- case Uil_Reason_Toolkit_Names:
- db_read_length_and_string (&header);
- break;
- case Charset_Lang_Codes_Table:
- charset_lang_codes_table = (unsigned short int *) XtMalloc (header.table_size);
- return_num_items = fread (charset_lang_codes_table,
- header.table_size,
- 1, dbfile);
- _check_read (return_num_items);
- break;
- case Argument_Enum_Set_Table:
- argument_enumset_table = (unsigned short int *) XtMalloc (header.table_size);
- return_num_items = fread (argument_enumset_table,
- header.table_size,
- 1, dbfile);
- _check_read (return_num_items);
- break;
- case Related_Argument_Table:
- related_argument_table = (unsigned short int *) XtMalloc (header.table_size);
- return_num_items = fread (related_argument_table,
- header.table_size,
- 1, dbfile);
- _check_read (return_num_items);
- break;
- case Uil_Gadget_Funcs:
- uil_gadget_variants = (unsigned short int *) XtMalloc (header.table_size);
- return_num_items = fread (uil_gadget_variants,
- header.table_size,
- 1, dbfile);
- _check_read (return_num_items);
- break;
- case Uil_Urm_Nondialog_Class:
- uil_urm_nondialog_class = (unsigned short int *) XtMalloc (header.table_size);
- return_num_items = fread (uil_urm_nondialog_class,
- header.table_size,
- 1, dbfile);
- _check_read (return_num_items);
- break;
- case Uil_Urm_Subtree_Resource:
- uil_urm_subtree_resource = (unsigned short int *) XtMalloc (header.table_size);
- return_num_items = fread (uil_urm_subtree_resource,
- header.table_size,
- 1, dbfile);
- _check_read (return_num_items);
- break;
- case Enum_Set_Table:
- db_read_int_and_shorts(&header);
- break;
- case Enumval_Values_Table:
- enumval_values_table = (int *) XtMalloc (header.table_size);
- return_num_items = fread (enumval_values_table,
- header.table_size,
- 1, dbfile);
- _check_read (return_num_items);
- break;
- default:
- diag_issue_diagnostic( d_bad_database, diag_k_no_source, diag_k_no_column );
- } /* end switch */
- } /* end for */
- fclose (dbfile);
- return;
-}
-
-
-\f
-void db_read_ints_and_string(header)
- _db_header_ptr header;
-
-/*
- *++
- *
- * PROCEDURE DESCRIPTION:
- *
- * This routine reads in tables of integers and one string unsigned chars and places them into
- * memory. It will Malloc new space for the table. The tables supported
- * this routine are:
- *
- * Key_Table:
- * Key_Table_Case_Ins:
- *
- *
- * FORMAL PARAMETERS:
- *
- * IMPLICIT INPUTS:
- *
- * IMPLICIT OUTPUTS:
- *
- * FUNCTION VALUE:
- *
- * SIDE EFFECTS:
- *
- *--
- */
-
-{
-
-/*
- * External Functions
- */
-
-/*
- * Local variables
- */
- int return_num_items, i, string_size=0;
- key_keytable_entry_type *table;
- char *string_table;
-
- switch (header->table_id)
- {
- /*
- * NOTE: Calloc is used here to protect against bad
- * pointers.
- */
- case Key_Table:
- key_table = (key_keytable_entry_type *) XtCalloc (1, header->table_size);
- table = key_table;
- break;
- case Key_Table_Case_Ins:
- key_table_case_ins = (key_keytable_entry_type *) XtCalloc (1, header->table_size);
- table = key_table_case_ins;
- break;
- default:
- diag_issue_internal_error ("Bad table_id in db_read_ints_and_string");
- }
-
- /*
- * Get the entire table with one read.
- * Then loop through the table and up the length of the strings.
- * Get all the strings with one read.
- * Reassign the addresses
- */
- return_num_items = fread(table, header->table_size, 1, dbfile);
- _check_read (return_num_items);
-
- for ( i=0 ; i<header->num_items; i++)
- {
- /*
- * Add one for the null character on the string
- */
- string_size += table[i].b_length + 1;
- };
-
- string_table = XtMalloc (sizeof (char) * string_size);
- return_num_items = fread(string_table,
- sizeof(unsigned char) * string_size,
- 1, dbfile);
- _check_read (return_num_items);
-
- for ( i=0 ; i<header->num_items; i++)
- {
- table[i].at_name = string_table;
- string_table += table[i].b_length + 1;
- };
-
- return;
-}
-
-
-\f
-void db_read_char_table(header)
- _db_header_ptr header;
-
-/*
- *++
- *
- * PROCEDURE DESCRIPTION:
- *
- * This routine reads in tables of unsigned chars and places them into
- * memory. It will Malloc new space for the table. The tables supported
- * this routine are:
- *
- * Allowed_Argument_Table:
- * Allowed_Child_Table:
- * Allowed_Control_Table:
- * Allowed_Reason_Table:
- *
- *
- * FORMAL PARAMETERS:
- *
- * IMPLICIT INPUTS:
- *
- * IMPLICIT OUTPUTS:
- *
- * FUNCTION VALUE:
- *
- * SIDE EFFECTS:
- *
- *--
- */
-
-{
-
-/*
- * External Functions
- */
-
-/*
- * Local variables
- */
- unsigned char **ptr;
- int return_num_items, i;
- unsigned char *table;
-
- switch (header->table_id)
- {
- /*
- * NOTE: Calloc is used here to protect against bad
- * pointers.
- */
- case Allowed_Argument_Table:
- allowed_argument_table = (unsigned char **) XtCalloc (1, header->table_size);
- ptr = allowed_argument_table;
- break;
- case Allowed_Child_Table:
- allowed_child_table =
- (unsigned char **) XtCalloc (1, header->table_size);
- ptr = allowed_child_table;
- break;
- case Allowed_Control_Table:
- allowed_control_table = (unsigned char **) XtCalloc (1, header->table_size);
- ptr = allowed_control_table;
- break;
- case Allowed_Reason_Table:
- allowed_reason_table = (unsigned char **) XtCalloc (1, header->table_size);
- ptr = allowed_reason_table;
- break;
- default:
- diag_issue_internal_error ("Bad table_id in db_read_char_table");
- }
-
- /*
- * Read in the entire table contents in one whack.
- * Then go through the table and set the addresses
- */
- table = (unsigned char *) XtMalloc (sizeof (unsigned char) * header->num_items * num_bits);
- return_num_items = fread(table,
- sizeof(char) * num_bits * header->num_items,
- 1, dbfile);
- _check_read (return_num_items);
- for ( i=1 ; i<=header->num_items; i++ )
- {
- ptr[i] = table;
- table += num_bits;
- };
-
- return;
-}
-
-
-\f
-void db_read_length_and_string(header)
- _db_header_ptr header;
-
-/*
- *++
- *
- * PROCEDURE DESCRIPTION:
- *
- * This routine reads in length and strings of unsigned chars and places them into
- * memory. It will Malloc new space for the table. The tables supported
- * this routine are:
- *
- * Charset_Xmstring_Names_Table:
- * Charset_Lang_Names_Table:
- * Uil_Widget_Names:
- * Uil_Children_Names:
- * Uil_Argument_Names:
- * Uil_Reason_Names:
- * Uil_Enumval_names:
- * Uil_Charset_Names:
- * Uil_Widget_Funcs:
- * Uil_Argument_Toolkit_Names:
- * Uil_Reason_Toolkit_Names:
- *
- *
- * FORMAL PARAMETERS:
- *
- * IMPLICIT INPUTS:
- *
- * IMPLICIT OUTPUTS:
- *
- * FUNCTION VALUE:
- *
- * SIDE EFFECTS:
- *
- *--
- */
-
-{
-
-/*
- * External Functions
- */
-
-/*
- * Local variables
- */
- int return_num_items, i, string_size=0;
- int *lengths;
- char *string_table;
- char **table;
-
- switch (header->table_id)
- {
- /*
- * NOTE: Calloc is used here because it might be possible to
- * have a string of zero length, particularly for the
- * first record. Ergo we Calloc to protect against bad
- * pointers.
- */
- case Charset_Xmstring_Names_Table:
- charset_xmstring_names_table = (char **) XtCalloc (1, header->table_size);
- table = charset_xmstring_names_table;
- break;
- case Charset_Lang_Names_Table:
- charset_lang_names_table = (char **) XtCalloc (1, header->table_size);
- table = charset_lang_names_table;
- break;
- case Uil_Widget_Names:
- uil_widget_names = (char **) XtCalloc (1, header->table_size);
- table = uil_widget_names ;
- break;
- case Uil_Children_Names:
- uil_child_names = (char **) XtCalloc (1, header->table_size);
- table = uil_child_names ;
- break;
- case Uil_Argument_Names:
- uil_argument_names = (char **) XtCalloc (1, header->table_size);
- table = uil_argument_names;
- break;
- case Uil_Reason_Names:
- uil_reason_names = (char **) XtCalloc (1, header->table_size);
- table = uil_reason_names;
- break;
- case Uil_Enumval_names:
- uil_enumval_names = (char **) XtCalloc (1, header->table_size);
- table = uil_enumval_names;
- break;
- case Uil_Charset_Names:
- uil_charset_names = (char **) XtCalloc (1, header->table_size);
- table = uil_charset_names;
- break;
- case Uil_Widget_Funcs:
- uil_widget_funcs = (char **) XtCalloc (1, header->table_size);
- table = uil_widget_funcs;
- break;
- case Uil_Argument_Toolkit_Names:
- uil_argument_toolkit_names = (char **) XtCalloc (1, header->table_size);
- table = uil_argument_toolkit_names;
- break;
- case Uil_Reason_Toolkit_Names:
- uil_reason_toolkit_names = (char **) XtCalloc (1, header->table_size);
- table = uil_reason_toolkit_names;
- break;
- default:
- diag_issue_internal_error ("Bad table_id in db_read_length_and_string");
- }
-
- /*
- * Get the lengths of all the strings with one read.
- * Then loop through the table and up the length of the strings.
- * Get all the strings with one read.
- * Reassign the addresses using the length table and string table.
- * Cleanup by Freeing length table.
- *
- * NOTE: In some tables the counting starts at 1 not 0 so you
- * have to be carefull.
- */
-
- lengths = (int *) XtMalloc (sizeof (int) * (header->num_items + 1));
- return_num_items = fread(lengths,
- sizeof(int) * (header->num_items + 1),
- 1, dbfile);
- _check_read (return_num_items);
- for ( i=0 ; i<=header->num_items; i++)
- {
- /*
- * Add one for the null terminator
- */
- if (lengths[i])
- {
- string_size += lengths[i] + 1;
- }
- }
-
- string_table = XtMalloc (sizeof (unsigned char) * string_size);
- return_num_items = fread(string_table,
- sizeof(unsigned char) * string_size,
- 1, dbfile);
- _check_read (return_num_items);
- for ( i=0 ; i<=header->num_items; i++)
- {
- if (lengths[i])
- {
- table[i] = string_table;
-/* BEGIN HaL Fix CR 5618 */
- if ((header->table_id == Uil_Widget_Names) &&
- (strcmp(table[i], "user_defined") == 0))
- uil_sym_user_defined_object = i;
-/* END HaL Fix CR 5618 */
- string_table += lengths[i] + 1;
- }
- }
-
- XtFree ((char *)lengths);
-
- return;
-}
-
-
-\f
-void db_read_int_and_shorts(header)
- _db_header_ptr header;
-
-/*
- *++
- *
- * PROCEDURE DESCRIPTION:
- *
- * This routine reads in a structure consisting of one integer and a
- * pointer to a table of integer and places them into
- * memory. It will Malloc new space for the table. The tables supported
- * this routine are:
- *
- * Enum_Set_Table:
- *
- *
- * FORMAL PARAMETERS:
- *
- * IMPLICIT INPUTS:
- *
- * IMPLICIT OUTPUTS:
- *
- * FUNCTION VALUE:
- *
- * SIDE EFFECTS:
- *
- *--
- */
-
-{
-
-/*
- * External Functions
- */
-
-/*
- * Local variables
- */
- int return_num_items, i, int_table_size=0;
- UilEnumSetDescDef *table;
- unsigned short int *int_table;
-
- switch (header->table_id)
- {
- case Enum_Set_Table:
- enum_set_table = (UilEnumSetDescDef *) XtCalloc (1, header->table_size);
- table = enum_set_table;
- break;
- default:
- diag_issue_internal_error ("Bad table_id in db_read_int_shorts");
- }
-
- /*
- * Get the entire table with one read.
- * Then loop through the table and add up the number of ints in each int table.
- * Get all the integer tables with one read.
- * Reassign the addresses of the tables.
- */
- return_num_items = fread(table, header->table_size, 1, dbfile);
- _check_read (return_num_items);
- for ( i=0 ; i<=header->num_items; i++)
- {
- int_table_size += table[i].values_cnt;
- }
-
- int_table = (unsigned short int *) XtCalloc (1, sizeof (short) * int_table_size);
- return_num_items = fread(int_table,
- sizeof(short) * int_table_size,
- 1, dbfile);
- _check_read (return_num_items);
- for ( i=0 ; i<=header->num_items; i++)
- {
- if (table[i].values_cnt)
- {
- table[i].values = int_table;
- int_table += table[i].values_cnt;
- }
- }
-
- return;
-}
-
-
-\f
-void db_open_file ()
-
-/*
- *++
- *
- * PROCEDURE DESCRIPTION:
- *
- * This routine opens the binary database file in a platform-dependent way,
- * performing i18n language switching in order to do so.
- *
- * Per the latest agreement on semantics, this routine does:
- * - first, try to open in the local directory (that is, with
- * no switching).
- * - second, try language switching and open
- *
- * FORMAL PARAMETERS:
- *
- * name A system-dependent string specifying the IDB file
- * to be opened.
- *
- * IMPLICIT INPUTS:
- *
- * IMPLICIT OUTPUTS:
- *
- * FUNCTION VALUE:
- *
- * SIDE EFFECTS:
- *
- *--
- */
-
-{
-
-/*
- * External Functions
- */
-
-/*
- * Local variables
- */
- char *resolvedname; /* current resolved name */
- SubstitutionRec subs[3];
- char *wmdPath;
-
- /*
- * Use XtFindFile instead of XtResolvePathName. XtResolvePathName requires a
- * display which UIL doesn't have. At the current time there is no support for
- * $LANG in the path string. If such support was deamed necessary, the %L, %l,
- * %t, %c values would be set up as subs here using globals from the fetch of
- * LANG variable used to determine the default codeset (or vice versa depending
- * on which is called first)
- *
- * If the last 4 characters of the file name are not .bdb
- * then pass in the suffix of .bdb. If a file isn't found with the suffix passed
- * in then try without the suffix.
- */
-
- /*
- * Make sure 'S' is the last one so we can remove the suffix for the first pass.
- */
- subs[0].match = 'N';
- subs[0].substitution = Uil_cmd_z_command.ac_database;
- subs[1].match = 'T';
- subs[1].substitution = "wmd";
- subs[2].match = 'S';
- subs[2].substitution = ".wmd";
-
- wmdPath = init_wmd_path(Uil_cmd_z_command.ac_database);
-
- resolvedname = 0;
-
- /*
- * Check and see if the .wmd suffix is already on the file. If not then try to
- * resolve the pathname with .wmd suffix first. If that fails or the suffix is
- * already on the file then just try to resolve the pathname.
- */
- if ( strcmp (&Uil_cmd_z_command.ac_database[strlen(Uil_cmd_z_command.ac_database)-4],".wmd") != 0 )
- resolvedname = XtFindFile(wmdPath,
- subs,
- XtNumber(subs),
- (XtFilePredicate)NULL);
-
- /*
- * No .wmd suffix or a failure to resolve the pathname with the .wmd suffix
- * Try without the suffix.
- */
- subs[2].substitution = "";
- if (resolvedname == 0)
- resolvedname = XtFindFile(wmdPath,
- subs,
- XtNumber(subs),
- (XtFilePredicate)NULL);
-
- if (resolvedname == 0)
- {
- diag_issue_diagnostic( d_wmd_open,
- diag_k_no_source, diag_k_no_column,
- Uil_cmd_z_command.ac_database);
- }
-
- dbfile = fopen (resolvedname, "r");
-
- /* If the file is not found, a fatal error is generated. */
- if (dbfile == NULL)
- {
- diag_issue_diagnostic( d_src_open,
- diag_k_no_source, diag_k_no_column,
- resolvedname);
- }
-
- return;
-}
-
-
-\f
-
-String get_root_dir_name()
-{
- int uid;
- _Xgetpwparams pwd_buf;
- struct passwd *pwd_value;
- static char *ptr = NULL;
- char *outptr;
-
- if (ptr == NULL)
- {
- if((ptr = (char *)getenv("HOME")) == NULL)
- {
- if((ptr = (char *)getenv(USER_VAR)) != NULL)
- {
- pwd_value = _XGetpwnam(ptr, pwd_buf);
- }
- else
- {
- uid = getuid();
- pwd_value = _XGetpwuid(uid, pwd_buf);
- }
- if (pwd_value != NULL)
- {
- ptr = pwd_value->pw_dir;
- }
- else
- {
- ptr = "";
- }
- }
- }
-
- outptr = XtMalloc (strlen(ptr) + 2);
- strcpy (outptr, ptr);
- strcat (outptr, "/");
- return outptr;
-}
-\f
-/*
- * XAPPLRES_DEFAULT and UIDPATH_DEFAULT are intentionally split to support
- * SCCS. DO NOT reformat the lines else %-N-%-S could be converted by SCCS into
- * something totally bizarre causing MrmOpenHierarchy failures.
- */
-
-/* The following are usually defined in the Makefile */
-
-#ifndef LIBDIR
-#define LIBDIR "/usr/lib/X11"
-#endif
-#ifndef INCDIR
-#define INCDIR "/usr/include/X11"
-#endif
-
-static char libdir[] = LIBDIR;
-static char incdir[] = INCDIR;
-
-static char XAPPLRES_DEFAULT[] = "\
-%%N\
-%%S:\
-%s/%%T/%%N\
-%%S:\
-%s%%T/%%N\
-%%S:\
-%s%%N\
-%%S:\
-%s/%%T/%%N\
-%%S:\
-%s/%%T/%%N\
-%%S";
-
-static char WMDPATH_DEFAULT[] = "\
-%%N\
-%%S:\
-%s%%T/%%N\
-%%S:\
-%s%%N\
-%%S:\
-%s/%%L/%%T/%%N\
-%%S:\
-%s/%%T/%%N\
-%%S";
-
-static char ABSOLUTE_PATH[] = "\
-%N\
-%S";
-
-String init_wmd_path(filename)
- String filename ;
-{
- String path;
- String old_path;
- String homedir;
- String wmd_path;
-
-
- if (filename[0] == '/')
- {
- wmd_path = XtMalloc(strlen(ABSOLUTE_PATH));
- strcpy (wmd_path, ABSOLUTE_PATH);
- }
- else
- {
- path = (char *)getenv ("WMDPATH");
- if (path == NULL)
- {
- homedir = get_root_dir_name();
- old_path = (char *)getenv ("XAPPLRESDIR");
- if (old_path == NULL)
- {
- wmd_path = XtCalloc(1, 2*strlen(homedir) +
- strlen(libdir) + strlen(incdir) +
- strlen(WMDPATH_DEFAULT));
- sprintf( wmd_path, WMDPATH_DEFAULT,
- homedir, homedir, libdir, incdir);
- }
- else
- {
- wmd_path = XtCalloc(1, 1*strlen(old_path) + 2*strlen(homedir) +
- strlen(libdir) + strlen(incdir) +
- strlen(XAPPLRES_DEFAULT));
- sprintf(wmd_path, XAPPLRES_DEFAULT,
- old_path,
- homedir, homedir, libdir, incdir);
- }
- XtFree (homedir);
- }
- else
- {
- wmd_path = XtMalloc(strlen(path) + 1);
- strcpy (wmd_path, path);
- free (path);
- }
- }
- return (wmd_path);
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilData.c /main/14 1999/04/16 10:41:44 mgreess $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** Global data definitions
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include <setjmp.h>
-
-#include <Dt/Editor.h>
-#include <Dt/Help.h>
-#include <Dt/HelpDialog.h>
-#include <Dt/HelpQuickD.h>
-#include <Dt/MenuButton.h>
-#include <Dt/Print.h>
-#include <Dt/TermPrim.h>
-#include <Dt/Term.h>
-
-#include <Mrm/MrmAppl.h>
-#include <Mrm/Mrm.h>
-#include <Xm/MwmUtil.h> /* For MWM_*_* defines. */
-
-#include "UilDefI.h"
-#include "UilSymGen.h"
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-/* Case sensitivity switch; TRUE if case sensitive. */
-
-
-
-externaldef(uil_comp_glbl) boolean uil_v_case_sensitive = TRUE;
-
-/* Location to store error type. */
-
-externaldef(uil_comp_glbl) jmp_buf uil_az_error_env_block;
-externaldef(uil_comp_glbl) boolean uil_az_error_env_valid = FALSE;
-
-/* Debugging switches. */
-
-#if debug_version
-externaldef(uil_comp_glbl) boolean uil_v_dump_tokens = FALSE;
-externaldef(uil_comp_glbl) boolean uil_v_dump_symbols = FALSE;
-#endif
-
-externaldef(uil_comp_glbl) status uil_l_compile_status = uil_k_success_status;
-externaldef(uil_comp_glbl) Uil_compile_desc_type *Uil_compile_desc_ptr = NULL;
-externaldef(uil_comp_glbl) int Uil_percent_complete = 0;
-externaldef(uil_comp_glbl) int Uil_lines_processed = 0;
-externaldef(uil_comp_glbl) char *Uil_current_file = "";
-
-
-/* Define the user-defined object and default character set */
-externaldef(uil_sym_glbl) unsigned short int uil_sym_user_defined_object =
- sym_k_user_defined_object;
-externaldef(uil_sym_glbl) unsigned short int uil_sym_default_charset =
- sym_k_iso_latin1_charset;
-externaldef(uil_sym_glbl) unsigned short int uil_sym_isolatin1_charset =
- sym_k_iso_latin1_charset;
-
-/* argument types, allowed tables, constraints, related arguments */
-#include "UilSymArTy.h"
-#include "UilSymRArg.h"
-#include "UilSymArTa.h"
-#include "UilSymReas.h"
-#include "UilSymCtl.h"
-#include "UilConst.h"
-
-/* Allowed children and child classes */
-#include "UilSymChCl.h"
-#include "UilSymChTa.h"
-
-/* sym_k... to name vectors. */
-#include "UilSymNam.h"
-
-/* Define mapping of sym_k_..._value to data type names. */
-externaldef(uil_comp_glbl) int uil_max_value = sym_k_max_value;
-externaldef(uil_comp_glbl) char *uil_datatype_names [] = {
- "", /* NOT USED */
- "any",
- "boolean",
- "string", /* char 8 */
- "compound_string",
- "float",
- "integer",
- "single_float",
- "localized_string",
- "wchar_string",
- "horizontal_dimension_integer",
- "vertical_dimension_integer",
- "horizontal_dimension_float",
- "vertical_dimension_float",
- "argument",
- "asciz_table",
- "class_rec_name",
- "color",
- "color_table",
- "font",
- "font_table",
- "icon",
- "identifier",
- "integer_table",
- "keysym",
- "pixmap",
- "reason",
- "rgb",
- "string_table",
- "translation_table",
- "widget_ref",
- "xbitmapfile",
- "fontset",
- "child",
-};
-
-/* Enumeration Set/Value tables */
-#include "UilSymEnum.h"
-
-/* Character set attribute tables */
-#include "UilSymCSet.h"
-
-/* Mrm encoding information */
-#include "UilUrmClas.h"
-
-/* Names of tokens in grammar */
-#include "UilTokName.h"
-
-/* The keyword tables */
-#include "UilKeyTab.h"
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilDef.h /main/13 1995/07/14 09:33:37 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file defines the set of definitions used by the public
-** access routines Uil and UilDumpSymbolTable.
-**
-**--
-**/
-
-#ifndef UilDef_h
-#define UilDef_h
-
-#if !defined(__STDC__) && !defined(__cplusplus) && !defined(c_plusplus) \
- && !defined(FUNCPROTO) && !defined(XTFUNCPROTO) && !defined(XMFUNCPROTO)
-#define _NO_PROTO
-#endif /* __STDC__ */
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-/*
-** Includes needed by other include files.
-*/
-#include <X11/Intrinsic.h>
-
-/*
-**
-** Common includes needed by public functions.
-**
-*/
-#include <uil/Uil.h>
-#include <uil/UilDBDef.h> /* This has to be loaded first. */
-#include <uil/UilSymGl.h>
-#include <uil/UilSymDef.h>
-
-/*
-** Function declarations not defined elsewhere
-*/
-#define _ARGUMENTS(arglist) arglist
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-/* uilmain.c */
-extern Uil_status_type Uil _ARGUMENTS((Uil_command_type
-*comand_desc,Uil_compile_desc_type *compile_desc,Uil_continue_type
-(*message_cb)(), char *message_data, Uil_continue_type (*status_cb)(),
-char *status_data));
-
-/* uilsymstor.c */
-extern void UilDumpSymbolTable _ARGUMENTS(( sym_entry_type *node_entry ));
-
-#if defined(__cplusplus) || defined(c_plusplus)
-}
-#endif
-
-#endif /* UilDef_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $TOG: UilDefI.h /main/13 1999/07/07 10:24:15 vipin $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file defines the set of definitions used by all of
-** modules of the UIL compiler.
-**
-**--
-**/
-
-#ifndef UilDefI_h
-#define UilDefI_h
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#define X_INCLUDE_TIME_H
-#define XOS_USE_XT_LOCKING
-#include <X11/Xos_r.h> /* for _Xctimeparams */
-
-#include <Mrm/MrmAppl.h>
-#include <Mrm/Mrm.h>
-
-/*
-**
-** Universal Definitions
-**
-*/
-
-#define _compiler_version "V2.0-000"
-#define _compiler_version_int 2
-#define _data_version 2
-#define _host_compiler "Motif Uil Compiler"
-
-#ifdef TRUE
-#undef TRUE
-#endif
-#define TRUE 1
-
-#ifdef FALSE
-#undef FALSE
-#endif
-#define FALSE 0
-
-#ifndef debug_version
-#define debug_version FALSE
-#endif
-
-#define NOSTRING_DIRECTION 2
-
-#define k_normal 1
-#define k_error 0
-
-typedef int status;
-typedef int boolean;
-
-/*
-** Copy const handling from XmP.h.
-*/
-
-#ifndef XmConst
-#if defined(__STDC__) || !defined( NO_CONST )
-#define XmConst const
-#else
-#define XmConst
-#endif /* __STDC__ */
-#endif /* XmConst */
-
-/* Uil will automatically strip this prefix when saving name of automatically
- * created child. This is used to prevent name conflicts in existing uil
- * files. Children names without this prefix will be saved as is.
- */
-#define AUTO_CHILD_PREFIX "Xm_"
-
-/*
-**
-** Constants controlling limits in the compiler
-**
-*/
-
-#define src_k_max_source_files 101
-#define src_k_max_source_line_length 132
-#define lex_k_unprint_sub '?'
-#define sym_k_max_list_count 1000
-#define sym_k_max_color_count 256
-#define Uil_k_max_include_dir_count 32
-
-/*
-**
-** Definition of Compiler Termination Statuses
-**
-*/
-
-#define uil_k_min_status Uil_k_min_status
-#define uil_k_success_status Uil_k_success_status
-#define uil_k_info_status Uil_k_info_status
-#define uil_k_warning_status Uil_k_warning_status
-#define uil_k_error_status Uil_k_error_status
-#define uil_k_severe_status Uil_k_severe_status
-#define uil_k_max_status Uil_k_max_status
-
-
-/*
-**
-** Macros to access bit vectors
-**
-*/
-
-/* MOVED TO DBDef.h */
-
-
-/*
-**
-** Upper and Lower Case Translation Macros
-**
-*/
-
-#define _upper(c) ((c) >= 'a' && (c) <= 'z' ? (c) & 0x5F:(c))
-#define _lower(c) ((c) >= 'A' && (c) <= 'Z' ? (c) | 0x20:(c))
-
-
-/*
-**
-** Assert Macro
-**
-*/
-
-#if debug_version
-#define _assert( __condition, __text ) \
- if (!(__condition)) \
- { diag_issue_internal_error( (__text)); }
-#else
-#define _assert( __condition, __text ) \
- if (!(__condition)) \
- { diag_issue_internal_error( NULL ); }
-#endif
-
-/*
-**
-** _error and _okay macro
-**
-*/
-
-#define _error( __status ) \
- ((__status & 1)==0)
-
-#define _success( __status ) \
- ((__status & 1)==1)
-
-
-/*
-**
-** Memory allocation definitions
-**
-*/
-
-#define _get_memory XtMalloc
-
-#define _free_memory XtFree
-
-/*
-**
-** Move macro
-**
-*/
-
-#ifdef NO_MEMMOVE
-/* For fixing the bug CR 4581 */
-extern char* uil_mmove(char*, char*, int);
-
-#define _move uil_mmove
-#else
-#define _move memmove
-#endif /* NO_MEMMOVE */
-
-/*
-**
-** Compare macro
-**
-*/
-
-#define _compare strcmp
-
-/*
-**
-** Fill macro
-**
-*/
-
-#define _fill( __string, __char, __len ) \
- { \
- register int i = __len; \
- while (--i >= 0) \
- (__string)[i] = __char; \
- }
-
-/*
-**
-** Index macro
-**
-*/
-
-#define _index( __char, __string, __len ) \
- ((int)((char *)memchr( __string, __char, __len ) - (char *)__string ))
-
-/*
-**
-** Debug output macro
-**
-*/
-#if debug_version
-#define _debug_output lst_debug_output
-#else
-#define _debug_output printf
-#endif
-
-
-/*
-**
-** Common includes needed by most modules
-**
-*/
-#include "Uil.h"
-#include "UilDBDef.h" /* for binary database */
-#include "UilMess.h"
-#include "UilSymDef.h" /* must come before UilKeyDef.h */
-#include "UilSrcDef.h" /* must come before UilIODef.h */
-#include "UilIODef.h"
-#include "UilDiagDef.h"
-#include "UilSarDef.h"
-#if defined(linux)
-#define YYSTYPE yystype
-#endif
-#include "UilLexPars.h"
-#include "UilCmdDef.h"
-#include "UilLexDef.h"
-
-/*
-** Global declarations
-*/
-#include "UilSymGl.h"
-#include "UilCompGl.h"
-
-/* Needed for following macro. */
-#include "UilSymGen.h"
-
-#define DEFAULT_TAG uil_charset_names[sym_k_XmFONTLIST_DEFAULT_TAG_charset]
-
-/*
-** Function declarations not defined elsewhere
-*/
-#define _ARGUMENTS(arglist) arglist
-
-/* uilcmd.c */
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-extern void diag_issue_diagnostic
- _ARGUMENTS(( int d_message_number ,
- src_source_record_type *az_src_rec ,
- int l_start_column, ... ));
-extern void lst_debug_output _ARGUMENTS(( char *format, ... ));
-
-
-void cmd_decode_command_line _ARGUMENTS(( int l_arg_count , char *rac_arg_value []));
-
-/* uildb.c */
-extern void db_incorporate _ARGUMENTS(( void ));
-extern void db_read_ints_and_string _ARGUMENTS((_db_header_ptr header));
-extern void db_read_char_table _ARGUMENTS((_db_header_ptr header));
-extern void db_read_length_and_string _ARGUMENTS((_db_header_ptr header));
-extern void db_read_int_and_shorts _ARGUMENTS((_db_header_ptr header));
-extern void db_open_file _ARGUMENTS(( void ));
-extern String get_root_dir_name _ARGUMENTS(( void ));
-extern String init_wmd_path _ARGUMENTS((String filename));
-
-/* uildiags.c */
-extern void diag_issue_summary _ARGUMENTS(( void ));
-extern char *diag_tag_text _ARGUMENTS(( int XmConst b_tag ));
-extern char *diag_object_text _ARGUMENTS(( int XmConst b_type ));
-extern char *diag_value_text _ARGUMENTS(( int XmConst b_type ));
-extern char *diag_charset_text _ARGUMENTS(( int XmConst b_type ));
-extern void diag_initialize_diagnostics _ARGUMENTS(( void ));
-extern void diag_restore_diagnostics _ARGUMENTS(( void ));
-extern void diag_reset_overflow_handler _ARGUMENTS(( void ));
-extern void diag_handler _ARGUMENTS(( int l_error ));
-extern void diag_issue_internal_error _ARGUMENTS(( char *error_text ));
-extern void write_msg_to_standard_error _ARGUMENTS(( XmConst int message_number , XmConst char *src_buffer , XmConst char *ptr_buffer , XmConst char *msg_buffer , XmConst char *loc_buffer ));
-extern char XmConst *diag_get_message_abbrev _ARGUMENTS(( int d_message_number ));
-extern void diag_report_status _ARGUMENTS(( void ));
-
-/* uilkeytab.c */
-extern key_keytable_entry_type *key_find_keyword _ARGUMENTS(( unsigned int symbol_length , char *symbol_ptr ));
-extern void key_initialize _ARGUMENTS(( void ));
-
-/* uillexana.c */
-extern int yylex _ARGUMENTS(( void ));
-extern void lex_initialize_analyzer _ARGUMENTS(( void ));
-extern void Uil_lex_cleanup_analyzer _ARGUMENTS(( void ));
-extern void lex_issue_error _ARGUMENTS(( int restart_token ));
-extern void issue_control_char_diagnostic _ARGUMENTS(( unsigned char c_char ));
-extern void lex_filter_unprintable_chars _ARGUMENTS(( unsigned char *buffer , int length , unsigned long flags ));
-extern long cvt_ascii_to_long _ARGUMENTS(( unsigned char XmConst *c_text ));
-extern sym_value_entry_type *create_str_entry _ARGUMENTS(( int l_size , int l_charset , sym_value_entry_type *az_charset_entry ));
-
-/* uillstlst.c */
-extern void lst_open_listing _ARGUMENTS(( void ));
-extern void Uil_lst_cleanup_listing _ARGUMENTS(( void ));
-extern status create_listing_file _ARGUMENTS(( uil_fcb_type *az_fcb ));
-extern void lst_output_line _ARGUMENTS(( char *ac_line , boolean v_new_page ));
-extern char *current_time _ARGUMENTS(( _Xctimeparams *ctime_buf ));
-extern void lst_output_listing _ARGUMENTS(( void ));
-extern void lst_output_messages _ARGUMENTS(( src_message_item_type *az_message_item ));
-extern void lst_output_machine_code _ARGUMENTS(( src_source_record_type *az_src_rec ));
-extern void lst_output_message_ptr_line _ARGUMENTS(( src_source_record_type *az_src_rec , char *src_buffer ));
-
-/* uillstmac.c */
-extern void save_widget_machine_code _ARGUMENTS(( sym_widget_entry_type *widget_entry , URMResourceContext *az_context ));
-extern void unload_stack _ARGUMENTS(( char *rec , int rec_size , src_source_record_type *az_src_rec ));
-extern void save_value_machine_code _ARGUMENTS(( sym_value_entry_type *value_entry , URMResourceContext *az_context ));
-extern void save_module_machine_code _ARGUMENTS(( src_source_record_type *az_src_rec , URMResourceContext *az_context ));
-extern void off_put _ARGUMENTS(( unsigned short off_type , unsigned short off_offset ));
-extern void off_get _ARGUMENTS(( unsigned short *off_type , unsigned short *off_offset ));
-extern char *type_from_code _ARGUMENTS(( MrmType type_code ));
-extern char *access_from_code _ARGUMENTS(( MrmFlag access_code ));
-extern char *group_from_code _ARGUMENTS(( MrmGroup group_code ));
-extern void format_arg_value _ARGUMENTS(( RGMArgValuePtr argval_ptr , char *buffer ));
-extern char *class_name_from_code _ARGUMENTS(( MrmCode mrm_class ));
-extern char *resource_name_from_code _ARGUMENTS(( MrmCode resource ));
-
-/* uilmain.c */
-extern void uil_exit _ARGUMENTS(( int severity ));
-extern Uil_status_type Uil _ARGUMENTS((Uil_command_type
-*comand_desc,Uil_compile_desc_type *compile_desc,Uil_continue_type
-(*message_cb)(), char *message_data, Uil_continue_type (*status_cb)(),
-char *status_data));
-
-
-/* uilp2out.c */
-extern void sem_output_uid_file _ARGUMENTS(( void ));
-extern void push _ARGUMENTS(( sym_entry_type *sym_entry ));
-extern sym_entry_type *pop _ARGUMENTS(( void ));
-extern void out_emit_widget _ARGUMENTS(( sym_widget_entry_type *widget_entry ));
-extern void extract_subtree_control _ARGUMENTS(( sym_list_entry_type *list_entry , sym_control_entry_type **menu_entry , int *count ));
-extern void extract_create_callback _ARGUMENTS(( sym_list_entry_type *list_entry , sym_callback_entry_type **create_entry ));
-extern void process_all_callbacks _ARGUMENTS(( sym_list_entry_type *list_entry , int *arglist_index ));
-extern void process_all_arguments _ARGUMENTS(( sym_list_entry_type *list_entry , int *arglist_index , int *related_count ));
-extern void process_all_controls _ARGUMENTS(( sym_list_entry_type *list_entry , int *widget_index ));
-extern void out_emit_value _ARGUMENTS(( sym_value_entry_type *value_entry ));
-extern void emit_callback _ARGUMENTS(( sym_callback_entry_type *callback_entry , int *arglist_index , boolean emit_create ));
-extern void emit_callback_procedures _ARGUMENTS(( sym_proc_ref_entry_type *proc_ref_entry_next, int *proc_ref_index, MrmOffset callback_offset ));
-extern int count_proc _ARGUMENTS(( sym_list_entry_type *proc_list, int count));
-extern void emit_argument _ARGUMENTS(( sym_argument_entry_type *argument_entry , int arglist_index , int *related_arg_count ));
-extern void emit_control _ARGUMENTS(( sym_control_entry_type *control_entry , int control_offset ));
-extern MrmCode ref_value _ARGUMENTS(( sym_value_entry_type *value_entry , MrmCode *arg_type , long *arg_value , MrmCode *arg_access , char **arg_index , MrmResource_id *arg_id , MrmCode *arg_group ));
-extern MrmCode ref_control _ARGUMENTS(( sym_control_entry_type *control_entry , MrmCode *access , char **index , MrmResource_id *id ));
-extern void issue_urm_error _ARGUMENTS(( char *problem ));
-extern MrmCode Urm_code_from_uil_type _ARGUMENTS(( int uil_type ));
-extern int compute_color_table_size _ARGUMENTS(( sym_value_entry_type *table_entry ));
-extern void create_color_table _ARGUMENTS(( sym_value_entry_type *table_entry , char *buffer ));
-extern int compute_icon_size _ARGUMENTS(( sym_value_entry_type *icon_entry ));
-extern void create_icon _ARGUMENTS(( sym_value_entry_type *icon_entry , char *buffer ));
-extern int compute_list_size _ARGUMENTS(( sym_list_entry_type *list_entry , int type ));
-extern void create_int_compression_codes _ARGUMENTS(( void ));
-extern void create_ext_compression_codes _ARGUMENTS(( void ));
-
-/* uilp2reslv.c */
-extern void sem_resolve_forward_refs _ARGUMENTS(( void ));
-
-/* uilsarcomp.c */
-extern sym_value_entry_type *sem_create_cstr _ARGUMENTS(( void ));
-extern sym_value_entry_type *sem_create_wchar_str _ARGUMENTS(( void ));
-extern void sem_append_str_to_cstr _ARGUMENTS(( sym_value_entry_type *az_cstr_entry , sym_value_entry_type *az_str_entry , boolean op2_temporary ));
-extern void sem_append_cstr_to_cstr _ARGUMENTS(( sym_value_entry_type *az_cstr1_entry , sym_value_entry_type *az_cstr2_entry , boolean op2_temporary ));
-extern sym_value_entry_type *sem_cat_str_to_str _ARGUMENTS(( sym_value_entry_type *az_str1_entry , boolean op1_temporary , sym_value_entry_type *az_str2_entry , boolean op2_temporary ));
-extern int sem_map_subclass_to_charset _ARGUMENTS(( int charset_as_subclass ));
-extern void sar_charset_verify _ARGUMENTS(( yystype *charset_frame ));
-extern void sar_make_fallback_charset _ARGUMENTS((yystype *name_frame));
-extern void sar_chk_charset_attr _ARGUMENTS(( yystype *target_frame , yystype *value_frame , yystype *prior_value_frame ));
-extern void sar_make_charset _ARGUMENTS(( yystype *target_frame , yystype *value_frame , yystype *attr_frame , yystype *keyword_frame ));
-
-/* uilsarexp.c */
-extern void sar_binary_op _ARGUMENTS(( yystype *operator_frame , yystype *op1_frame , yystype *op2_frame ));
-extern void sar_unary_op _ARGUMENTS(( yystype *operator_frame , yystype *op1_frame ));
-
-/* uilsarinc.c */
-extern void sar_include_file _ARGUMENTS(( yystype *file_frame , yystype *include_frame , yystype *semi_frame ));
-
-/* uilsarmod.c */
-extern void sar_initialize _ARGUMENTS(( void ));
-extern void sar_create_root _ARGUMENTS(( yystype *root_frame ));
-extern void sar_create_module _ARGUMENTS(( yystype *target_frame , yystype *id_frame , yystype *module_frame ));
-extern void sar_process_module_version _ARGUMENTS(( yystype *value_frame , yystype *start_frame ));
-extern void sar_process_module_sensitivity _ARGUMENTS(( yystype *token_frame , yystype *start_frame ));
-extern void sar_process_module_charset _ARGUMENTS(( yystype *token_frame , yystype *start_frame ));
-extern void sar_save_module_source _ARGUMENTS(( void ));
-extern void sar_make_def_obj _ARGUMENTS(( yystype *object_frame ));
-extern void sar_process_module_variant _ARGUMENTS(( yystype *obj_type_frame , yystype *variant_frame ));
-extern void sar_save_section_source _ARGUMENTS(( yystype *header_frame , int section_type ));
-
-/* uilsarobj.c */
-extern void sar_assoc_comment _ARGUMENTS(( sym_obj_entry_type *object ));
-extern void sar_create_object _ARGUMENTS(( yystype *object_frame , unsigned char object_type ));
-extern void sar_create_child _ARGUMENTS(( yystype *object_frame ));
-extern void sar_link_section _ARGUMENTS(( yystype *id_frame ));
-extern void sar_save_src_semicolon_pos _ARGUMENTS(( yystype *semi_frame ));
-extern void sar_save_list_end _ARGUMENTS(( yystype *close_frame ));
-extern void sar_save_src_entry_end _ARGUMENTS(( yystype *close_frame , yystype *entry_frame ));
-extern void sar_set_object_flags _ARGUMENTS(( yystype *current_frame , unsigned char mask ));
-extern void sar_unset_object_flags _ARGUMENTS(( yystype *current_frame , unsigned char mask ));
-extern void sar_set_list_type _ARGUMENTS(( yystype *current_frame ));
-extern void sar_set_object_class _ARGUMENTS(( yystype *current_frame ));
-extern void sar_set_object_variant _ARGUMENTS(( yystype *current_frame ));
-extern yystype *sem_find_object _ARGUMENTS(( yystype *current_frame ));
-extern void sar_object_reference _ARGUMENTS(( yystype *ref_frame ));
-extern void sar_update_parent_list _ARGUMENTS(( yystype *control_list_frame ));
-extern void parent_list_traverse _ARGUMENTS(( sym_widget_entry_type *widget_entry , sym_list_entry_type *control_list_entry ));
-extern void sar_save_feature _ARGUMENTS(( yystype *feature_frame ));
-extern void sar_save_argument_pair _ARGUMENTS(( yystype *argument_frame , yystype *value_frame , yystype *equals_frame ));
-extern void sar_save_reason_binding _ARGUMENTS(( yystype *reason_frame , yystype *proc_ref_frame , yystype *equals_frame ));
-extern void sar_save_control_item _ARGUMENTS(( yystype *managed_frame , yystype *item_frame ));
-extern void sar_save_control_widget _ARGUMENTS(( yystype *control_frame , yystype *item_frame ));
-extern void sar_save_user_proc_ref_src _ARGUMENTS(( yystype *procedure_frame , yystype *proc_id_frame , yystype *proc_arg_frame ));
-extern void sar_process_proc_ref _ARGUMENTS(( yystype *proc_id_frame , yystype *proc_arg_frame , int context ));
-extern void sar_add_list_entry _ARGUMENTS(( yystype *entry_frame ));
-extern void sar_add_forward_list_entry _ARGUMENTS(( yystype *entry_frame ));
-extern void sar_verify_object _ARGUMENTS(( yystype *current_frame ));
-extern sym_entry_type *sem_allocate_node _ARGUMENTS(( unsigned char node_tag , unsigned short node_size ));
-extern void sem_free_node _ARGUMENTS(( sym_entry_type *node_ptr ));
-
-/* uilsarproc.c */
-extern void sar_create_procedure _ARGUMENTS(( XmConst yystype *id_frame , XmConst yystype *param_frame , XmConst yystype *class_frame , XmConst yystype *semi_frame ));
-extern sym_proc_ref_entry_type *sem_reference_procedure _ARGUMENTS(( yystype *id_frame , XmConst yystype *value_frame , XmConst int context ));
-extern sym_entry_type *sem_ref_name _ARGUMENTS(( yystype *id_frame , XmConst int tag ));
-
-/* uilsarval.c */
-extern void sar_map_keyword_to_name _ARGUMENTS(( yystype *target_frame , yystype *keyword_frame ));
-extern void sar_process_id _ARGUMENTS(( yystype *target_frame , yystype *id_frame ));
-extern void sar_process_id_ref _ARGUMENTS(( yystype *id_frame ));
-extern void sar_make_private_value _ARGUMENTS(( yystype *value_frame , yystype *token_frame , int value_type , yystype *keyword_frame , int arg_type ));
-extern void sar_make_rgb_private_value _ARGUMENTS(( yystype *value_frame , yystype *token_frame , int value_type , yystype *keyword_frame , int arg_type ));
-extern void sar_append_table_value _ARGUMENTS(( yystype *value_frame , yystype *table_frame , int table_type , yystype *comma_frame ));
-extern void sar_value_not_implemented _ARGUMENTS(( yystype *value_frame , yystype *token_frame , char *error_text ));
-extern void sar_cat_value _ARGUMENTS(( yystype *operator_frame , yystype *op1_frame , yystype *op2_frame ));
-extern void sar_chk_comp_str_attr _ARGUMENTS(( yystype *target_frame , yystype *value_frame , yystype *prior_value_frame ));
-extern void sar_make_comp_str _ARGUMENTS(( yystype *target_frame , yystype *value_frame , yystype *attr_frame , yystype *keyword_frame ));
-extern void sar_make_comp_str_comp _ARGUMENTS((yystype *target_frame, yystype *type_frame, yystype *value_frame, yystype *keyword_frame));
-extern void sar_make_wchar_str _ARGUMENTS(( yystype *target_frame , yystype *value_frame , yystype *attr_frame , yystype *keyword_frame ));
-extern void sar_value_type_error _ARGUMENTS(( yystype *value_frame , int expected_type ));
-extern void sar_private_error _ARGUMENTS(( yystype *value_frame ));
-extern void sar_import_value_entry _ARGUMENTS(( yystype *target_frame , yystype *token_frame ));
-extern void sar_bind_value_name _ARGUMENTS(( yystype *id_frame , yystype *value_frame , yystype *semi_frame ));
-extern sym_name_entry_type *sem_dcl_name _ARGUMENTS(( XmConst yystype *id_frame ));
-extern sym_value_entry_type *sem_create_value_entry _ARGUMENTS(( char *value , int length , int value_type ));
-extern void sar_create_identifier _ARGUMENTS(( XmConst yystype *id_frame , XmConst yystype *semi_frame ));
-extern void sar_make_font_table _ARGUMENTS(( yystype *target_frame , yystype *font_frame , yystype *prior_target_frame , yystype *keyword_frame ));
-extern void sar_make_font_item _ARGUMENTS(( yystype *target_frame , yystype *charset_frame , yystype *font_frame ));
-extern void sar_make_font _ARGUMENTS(( yystype *target_frame , yystype *charset_frame , yystype *value_frame , yystype *keyword_frame ));
-extern void sar_make_fontset _ARGUMENTS(( yystype *target_frame , yystype *charset_frame , yystype *value_frame , yystype *keyword_frame ));
-extern void sar_make_color_item _ARGUMENTS(( yystype *target_frame , yystype *color_frame , yystype *letter_frame ));
-extern void sar_append_color_item _ARGUMENTS(( yystype *target_frame , yystype *item_frame , yystype *prior_target_frame ));
-extern void sar_make_color_table _ARGUMENTS(( yystype *target_frame , yystype *list_frame , yystype *keyword_frame ));
-extern void sar_make_color _ARGUMENTS(( yystype *target_frame , yystype *color_frame , yystype *mono_frame , yystype *keyword_frame ));
-extern void sar_make_icon _ARGUMENTS(( yystype *target_frame , yystype *list_frame , yystype *table_frame , yystype *keyword_frame ));
-
-/* uilsemcset.c */
-extern char *sem_charset_name _ARGUMENTS(( int l_charset , sym_value_entry_type *az_charset_entry ));
-extern void sem_charset_info _ARGUMENTS(( int l_charset , sym_value_entry_type *az_charset_entry , int *write_direction , int *parse_direction , int *sixteen_bit ));
-extern int sem_charset_lang_name _ARGUMENTS(( char *lang_charset ));
-
-/* uilsemval.c */
-typedef union {
- boolean boolean_value;
- int integer_value;
- double real_value;
- char character_value; /* character data type RAP */
- float single_float_value; /* single float data type RAP */
- } data_value_type;
-
-extern void sem_validation _ARGUMENTS(( void ));
-extern void sem_validate_node _ARGUMENTS(( sym_entry_type *node ));
-extern sym_value_entry_type *sem_validate_value_node _ARGUMENTS(( sym_value_entry_type *value_node ));
-extern void sem_validate_widget_node _ARGUMENTS(( sym_widget_entry_type *widget_node ));
-extern void sem_validate_argument_list _ARGUMENTS(( sym_widget_entry_type *widget_node , unsigned int widget_type , sym_list_entry_type *list_entry , sym_argument_entry_type **seen ));
-extern void sem_validate_argument_entry _ARGUMENTS(( sym_widget_entry_type *widget_node , unsigned int widget_type , sym_list_entry_type *list_entry , sym_argument_entry_type *argument_entry , sym_argument_entry_type **seen ));
-extern void sem_validate_argument_enumset _ARGUMENTS(( sym_argument_entry_type *argument_entry , int arg_code , sym_value_entry_type *arg_value_entry ));
-extern void sem_validate_constraint_entry _ARGUMENTS(( sym_widget_entry_type *widget_node , sym_argument_entry_type *argument_entry, unsigned int widget_type ));
-extern void sem_validate_callback_list _ARGUMENTS(( sym_widget_entry_type *widget_node , unsigned int widget_type , sym_list_entry_type *list_entry , sym_callback_entry_type **seen ));
-extern void sem_validate_callback_entry _ARGUMENTS(( sym_widget_entry_type *widget_node , unsigned int widget_type , sym_list_entry_type *list_entry , sym_callback_entry_type *callback_entry , sym_callback_entry_type **seen ));
-extern void sem_validate_control_list _ARGUMENTS(( sym_widget_entry_type *widget_node , unsigned int widget_type , sym_list_entry_type *list_entry , int *count ));
-extern void sem_validate_control_entry _ARGUMENTS(( sym_widget_entry_type *widget_node , unsigned int widget_type , sym_list_entry_type *list_entry , sym_control_entry_type *control_entry , int *gadget_count ));
-extern void sem_validate_widget_cycle _ARGUMENTS(( sym_list_entry_type *list_entry , sym_name_entry_type *cycle_name ));
-extern boolean sem_validate_widget_cycle_aux _ARGUMENTS(( sym_list_entry_type *list_entry , sym_name_entry_type *cycle_name ));
-extern boolean sem_validate_verify_cycle _ARGUMENTS(( sym_widget_entry_type *cycle_obj , sym_list_entry_type *list_entry ));
-extern void sem_validate_procref_list _ARGUMENTS(( sym_list_entry_type *list_entry ));
-extern void sem_validate_procref_entry _ARGUMENTS(( sym_proc_ref_entry_type *procref_entry ));
-extern boolean sem_argument_allowed _ARGUMENTS(( unsigned int arg_code , unsigned int class_code ));
-extern boolean sem_reason_allowed _ARGUMENTS(( unsigned int rsn_code , unsigned int class_code ));
-extern boolean sem_control_allowed _ARGUMENTS(( unsigned int ctl_code , unsigned int class_code ));
-extern boolean sem_child_allowed _ARGUMENTS(( unsigned int ctl_code , unsigned int class_code ));
-extern sym_value_entry_type *sem_evaluate_value _ARGUMENTS(( sym_value_entry_type *val_entry ));
-extern sym_value_entry_type *sem_evaluate_value_cs _ARGUMENTS(( sym_value_entry_type *csval_entry ));
-/* BEGIN OSF Fix CR 4859 */
-/* END OSF Fix CR 4859 */
-extern sym_value_entry_type *sem_evaluate_value_expr _ARGUMENTS(( sym_value_entry_type *value_entry ));
-extern int validate_arg _ARGUMENTS(( sym_value_entry_type *operand_entry , int v_operator ));
-extern int sem_convert_to_float _ARGUMENTS(( sym_value_entry_type *operand_entry , data_value_type *data_value ));
-extern int sem_convert_to_integer _ARGUMENTS(( sym_value_entry_type *operand_entry , data_value_type *data_value ));
-extern int sem_convert_to_single_float _ARGUMENTS(( sym_value_entry_type *operand_entry , data_value_type *data_value ));
-extern int sem_convert_to_error _ARGUMENTS(( sym_value_entry_type *operand_entry , data_value_type *data_value ));
-extern void sar_cat_value_entry _ARGUMENTS(( sym_value_entry_type **target_entry , sym_value_entry_type *op1_entry , sym_value_entry_type *op2_entry ));
-
-/* uilsrcsrc.c */
-extern void src_initialize_source _ARGUMENTS(( void ));
-extern void Uil_src_cleanup_source _ARGUMENTS(( void ));
-extern void src_open_file _ARGUMENTS(( XmConst char *c_file_name , char *full_file_name ));
-extern status src_get_source_line _ARGUMENTS(( void ));
-extern status open_source_file _ARGUMENTS(( XmConst char *c_file_name , uil_fcb_type *az_fcb , src_source_buffer_type *az_source_buffer ));
-extern status close_source_file _ARGUMENTS(( uil_fcb_type *az_fcb ));
-extern status get_line _ARGUMENTS(( uil_fcb_type *az_fcb ));
-extern boolean reget_line _ARGUMENTS(( uil_fcb_type *az_fcb , char *c_buffer , XmConst z_key *z_access_key ));
-extern char *src_get_file_name _ARGUMENTS(( XmConst src_source_record_type *az_src_rec ));
-extern boolean src_retrieve_source _ARGUMENTS(( XmConst src_source_record_type *az_src_rec , char *c_buffer ));
-extern void src_append_diag_info _ARGUMENTS(( XmConst src_source_record_type *az_src_rec , XmConst int l_src_pos , XmConst char *c_msg_text , XmConst int l_msg_number ));
-extern void src_append_machine_code _ARGUMENTS(( src_source_record_type *az_src_rec , XmConst int l_offset , XmConst int l_code_len , XmConst char *c_code , XmConst char *c_text_arg ));
-
-/* uilsymnam.c */
-extern sym_name_entry_type *sym_find_name _ARGUMENTS(( int l_length , char *c_text ));
-extern sym_name_entry_type *sym_insert_name _ARGUMENTS(( int l_length , char *c_text ));
-extern int hash_function _ARGUMENTS(( int l_length , char *c_value ));
-#if debug_version
-extern void sym_dump_hash_table _ARGUMENTS(( void ));
-#endif
-
-/* uilsymstor.c */
-extern void sym_initialize_storage _ARGUMENTS(( void ));
-extern void Uil_sym_cleanup_storage _ARGUMENTS(( boolean freealloc ));
-extern void sym_make_external_def _ARGUMENTS(( XmConst sym_name_entry_type *az_name ));
-extern void sym_make_forward_ref _ARGUMENTS(( XmConst yystype *az_id_frame , XmConst int l_widget_type , XmConst char *a_location ));
-extern void sym_make_value_forward_ref _ARGUMENTS(( XmConst yystype *az_value_frame , XmConst char *a_location , XmConst unsigned char fwd_ref_flags ));
-extern void UilDumpSymbolTable _ARGUMENTS(( sym_entry_type *node_entry ));
-extern void sym_dump_symbols _ARGUMENTS(( void ));
-extern void sym_dump_symbol _ARGUMENTS(( sym_entry_type *az_symbol_entry ));
-extern void sym_dump_widget _ARGUMENTS(( XmConst sym_widget_entry_type *az_widget_entry ));
-extern void sym_dump_argument _ARGUMENTS(( XmConst sym_argument_entry_type *az_argument_entry ));
-extern void sym_dump_control _ARGUMENTS(( XmConst sym_control_entry_type *az_control_entry ));
-extern void sym_dump_callback _ARGUMENTS(( XmConst sym_callback_entry_type *az_callback_entry ));
-extern void sym_dump_list _ARGUMENTS(( XmConst sym_list_entry_type *az_list_entry ));
-extern void sym_dump_name _ARGUMENTS(( XmConst sym_name_entry_type *az_name_entry ));
-extern void sym_dump_module _ARGUMENTS(( XmConst sym_module_entry_type *az_module_entry ));
-extern void sym_dump_color_item _ARGUMENTS(( XmConst sym_color_item_entry_type *az_color_item_entry ));
-extern void sym_dump_parent_list_item _ARGUMENTS(( XmConst sym_parent_list_type *az_parent_list_item ));
-extern void sym_dump_external_def _ARGUMENTS(( XmConst sym_external_def_entry_type *az_external_def_entry ));
-extern void sym_dump_proc_def _ARGUMENTS(( XmConst sym_proc_def_entry_type *az_proc_def_entry ));
-extern void sym_dump_proc_ref _ARGUMENTS(( XmConst sym_proc_ref_entry_type *az_proc_ref_entry ));
-extern void sym_dump_forward_ref _ARGUMENTS(( XmConst sym_forward_ref_entry_type *az_forward_ref_entry ));
-extern void sym_dump_value _ARGUMENTS(( XmConst sym_value_entry_type *az_value_entry ));
-extern void output_text _ARGUMENTS(( XmConst int length , XmConst char *text ));
-extern void sym_dump_source_info _ARGUMENTS(( sym_entry_header_type *hdr ));
-extern void sym_dump_obj_header _ARGUMENTS(( XmConst sym_obj_entry_type *az_obj_entry ));
-extern void sym_dump_include_file _ARGUMENTS(( sym_include_file_entry_type *az_symbol_entry ));
-extern void sym_dump_section _ARGUMENTS(( sym_section_entry_type *az_symbol_entry ));
-extern void sym_dump_object_variant _ARGUMENTS(( sym_def_obj_entry_type *az_symbol_entry ));
-extern void sym_dump_root_entry _ARGUMENTS(( sym_root_entry_type *az_symbol_entry ));
-extern char *sym_section_text _ARGUMENTS(( int b_type ));
-extern void dump_free_list _ARGUMENTS(( void ));
-
-#if defined(__cplusplus) || defined(c_plusplus)
-}
-#endif
-
-#endif /* UilDefI_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilDiagDef.h /main/10 1995/07/14 09:34:00 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file defines the interface to the UIL diagnostic
-** issuing procedures in the UIL compiler.
-**
-**--
-**/
-
-#ifndef UilDiagDef_h
-#define UilDiagDef_h
-
-
-#define diag_k_no_source NULL
-#define diag_k_no_column 255
-
-
-#endif /* UilDiagDef_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: UilDiags.c /main/15 1996/10/21 11:06:46 cde-osf $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contains the procedures for issuing diagnostics
-** for the UIL compiler.
-**
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include <stdio.h>
-#include <signal.h>
-#include <setjmp.h>
-#include <X11/Intrinsic.h>
-#include <X11/Xos.h>
-#include <Xm/Xm.h>
-
-#include <stdarg.h>
-
-#include "UilDefI.h"
-#include "UilMessTab.h"
-
-/*
-**
-** EXTERNAL Storage
-**
-*/
-
-externaldef(uil_comp_glbl) int Uil_message_count[uil_k_max_status+1];
-
-/*
-**
-** OWN Storage
-**
-*/
-
-static boolean issuing_diagnostic;
-static int Uil_diag_status_delay_count;
-
-/*
- * Fix for CR 5534 - static storage for old signal handlers
- */
-static void (*bus_handler)();
-static void (*sys_handler)();
-static void (*fpe_handler)();
-
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** diag_store_handlers saves the signal handlers from the calling
-** application in global variables.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** the global signal handler variables are changed.
-**
-**--
-**/
-
-void diag_store_handlers
- ( void )
-{
-/*
- * Fix for CR 5534 - set the file variables for holding previous bus handlers
- * to NULL and then store the old handlers (if any) when
- * calling signal for the Uil handlers
- */
- bus_handler = signal( SIGBUS, diag_handler ); /* access violations */
-#ifdef SIGSYS
- sys_handler = signal( SIGSYS, diag_handler ); /* bad arguments to sys calls */
-#endif
- fpe_handler = signal( SIGFPE, diag_handler ); /* overflows */
-/*
- * End Fix for CR 5534
- */
-
-}
-
-
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** diag_issue_diagnostic emits a diagnostic to the listing file if
-** there is one and also sends an error to standard error file.
-**
-** FORMAL PARAMETERS:
-**
-** d_message_number: index of the error to issue. The indices are
-** defined in message.h
-** a_src_rec: pointer to the source record to issue the
-** diagnostic against. This data structure has
-** l_start_column: position within the source line for diagnostic.
-** A negative value indicates no position.
-** args: a variable length parameter list that holds the
-** arguments to be substituted in the diagnositic
-**
-** IMPLICIT INPUTS:
-**
-** diag_rz_msg_table: table of messages and their severities defined
-** in message_table.h
-** diag_rl_external_code: Possible OS-specific external code
-**
-** IMPLICIT OUTPUTS:
-**
-** messages emitted
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** message counts updated
-**
-**--
-**/
-
-#define buf_size (src_k_max_source_line_length + 1)
-
-void diag_issue_diagnostic
- ( int d_message_number, src_source_record_type *az_src_rec,
- int l_start_column, ...)
-
-{
- va_list ap; /* ptr to variable length parameter */
- int severity; /* severity of message */
- int message_number; /* message number */
- char msg_buffer[132]; /* buffer to construct message */
- char ptr_buffer[buf_size]; /* buffer to construct pointer */
- char loc_buffer[132]; /* buffer to construct location */
- char src_buffer[buf_size]; /* buffer to hold source line */
-
- /*
- ** check if we are in a loop issuing errors
- */
-
- if (issuing_diagnostic)
- {
- _debug_output( "nested diagnostics issued" );
- Uil_message_count[ uil_k_severe_status ]++;
- uil_exit( uil_k_severe_status );
- }
-
- issuing_diagnostic = TRUE;
-
- /*
- ** determine the severity of the error. For d_submit_spr we issue
- ** the fix previous error diagnostic, if we encountered prior errors;
- ** otherwise we let it thru.
- */
-
- message_number = d_message_number;
-
- if (message_number == d_submit_spr)
- if (Uil_message_count[ uil_k_error_status ] > 0)
- message_number = d_prev_error;
-
- severity = diag_rz_msg_table[ message_number ].l_severity;
-
- /*
- ** check if messages of this severity are to be reported.
- */
-
- switch (severity)
- {
- case uil_k_info_status:
- if (Uil_cmd_z_command.v_report_info_msg)
- break;
-
- issuing_diagnostic = FALSE;
- return;
-
- case uil_k_warning_status:
- if (Uil_cmd_z_command.v_report_warn_msg)
- break;
-
- issuing_diagnostic = FALSE;
- return;
-
- default:
- ;
- }
-
- Uil_message_count[ severity ]++;
- if (severity > uil_l_compile_status)
- uil_l_compile_status = severity;
-
- /*
- ** Diagnostic format varies considerably
- ** 1) no source
- ** message
- ** 2) source but no column
- ** source line
- ** message
- ** location in source message
- ** 3) source and column
- ** source line
- ** column pointer
- ** message
- ** location in source message
- ** 4) source and column but no access key
- ** message
- ** location in source message
- */
-
- /*
- ** substitute any parameters into the error message placing the
- ** resultant string in msg_buffer
- */
-
- va_start(ap, l_start_column);
-
-#ifndef NO_MESSAGE_CATALOG
- vsprintf( msg_buffer,
- catgets(uil_catd, UIL_SET1, msg_cat_table[ message_number ],
- diag_rz_msg_table[ message_number ].ac_text),
- ap );
-#else
- vsprintf( msg_buffer,
- diag_rz_msg_table[ message_number ].ac_text,
- ap );
-#endif
- va_end(ap);
-
- src_buffer[ 0 ] = 0;
- loc_buffer[ 0 ] = 0;
- ptr_buffer[ 0 ] = 0;
-
- if (az_src_rec != diag_k_no_source)
- {
- if ( !_src_null_access_key(az_src_rec->z_access_key) )
- {
- /*
- ** create the location line line
- */
-
-#ifndef NO_MESSAGE_CATALOG
- sprintf( loc_buffer,
- catgets(uil_catd, UIL_SET_MISC,
- UIL_MISC_0, "\t\t line: %d file: %s"),
- az_src_rec->w_line_number,
- src_get_file_name( az_src_rec ) );
-#else
- sprintf( loc_buffer,
- "\t\t line: %d file: %s",
- az_src_rec->w_line_number,
- src_get_file_name( az_src_rec ) );
-#endif
-
- /*
- ** retrieve the source line
- */
-
- src_buffer[ 0 ] = '\t';
- src_retrieve_source( az_src_rec, &src_buffer[ 1 ] );
-
- /*
- ** filter the standard unprintable characters.
- */
-
- lex_filter_unprintable_chars
- ( (unsigned char *)src_buffer, strlen( src_buffer ), 0 );
-
- /*
- ** create the column pointer if a source position was given
- */
-
- if (l_start_column != diag_k_no_column)
- {
- int i;
-
- for (i=0; i < l_start_column+1; i++)
- {
- if (src_buffer[ i ] == '\t')
- ptr_buffer[ i ] = '\t';
- else
- ptr_buffer[ i ] = ' ';
- }
-
- ptr_buffer[ i++ ] = '*';
- ptr_buffer[ i ] = 0;
- }
- }
- else /* no access key */
- {
- /*
- ** create the location line line
- */
-
- if (l_start_column != diag_k_no_column)
-#ifndef NO_MESSAGE_CATALOG
- sprintf(loc_buffer,
- catgets(uil_catd, UIL_SET_MISC,
- UIL_MISC_1,
- "\t\t line: %d position: %d file: %s"),
- az_src_rec->w_line_number,
- l_start_column + 1,
- src_get_file_name( az_src_rec ) );
-#else
- sprintf(loc_buffer,
- "\t\t line: %d position: %d file: %s",
- az_src_rec->w_line_number,
- l_start_column + 1,
- src_get_file_name( az_src_rec ) );
-#endif
- else
-#ifndef NO_MESSAGE_CATALOG
- sprintf( loc_buffer, catgets(uil_catd, UIL_SET_MISC,
- UIL_MISC_0,
- "\t\t line: %d file: %s"),
- az_src_rec->w_line_number,
- src_get_file_name( az_src_rec ) );
-#else
- sprintf( loc_buffer,
- "\t\t line: %d file: %s",
- az_src_rec->w_line_number,
- src_get_file_name( az_src_rec ) );
-#endif
- }
- }
-
- /*
- ** issue the error to standard error file (system specific)
- */
-
- write_msg_to_standard_error
- ( message_number, src_buffer, ptr_buffer, msg_buffer, loc_buffer );
-
- /*
- ** if we have a listing, place message in the source structure
- */
-
- if (Uil_cmd_z_command.v_listing_file)
- src_append_diag_info
- ( az_src_rec, l_start_column, msg_buffer, message_number );
-
- issuing_diagnostic = FALSE;
-
- /*
- ** if there are fatal errors, print the listing file and exit.
- */
-
- if (Uil_message_count[ uil_k_severe_status] > 0)
- {
- lst_output_listing();
- uil_exit( uil_k_severe_status );
- }
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** diag_issue_summary emits a diagnostic summary if any diagnostics
-** were issued during the compilation
-**
-** FORMAL PARAMETERS:
-**
-** void
-**
-** IMPLICIT INPUTS:
-**
-** Uil_message_count table of messages issued
-**
-** IMPLICIT OUTPUTS:
-**
-** messages optionally emitted
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void diag_issue_summary()
-
-{
-
- if (uil_l_compile_status == uil_k_success_status)
- return;
-
- Uil_cmd_z_command.v_report_info_msg = TRUE;
-
- diag_issue_diagnostic
- ( d_summary,
- diag_k_no_source, diag_k_no_column,
- Uil_message_count[ uil_k_error_status ],
- Uil_message_count[ uil_k_warning_status ],
- Uil_message_count[ uil_k_info_status ] );
-
- return;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** The major constructs in the UIL language each have a data structure
-** and a tag value in the first byte of that data structure. Given
-** a tag value, this routine will return a string that can be substituted
-** in an error message to describe that construct.
-**
-** FORMAL PARAMETERS:
-**
-** b_tag
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** char * text corresponding to tag
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-char *diag_tag_text( b_tag )
-
-int XmConst b_tag;
-
-{
-
- switch (b_tag)
- {
- case sym_k_value_entry:
- return "value";
- case sym_k_widget_entry:
- return "widget";
- case sym_k_gadget_entry:
- return "gadget";
- case sym_k_child_entry:
- return "auto child";
- case sym_k_module_entry:
- return "module";
- case sym_k_proc_def_entry:
- case sym_k_proc_ref_entry:
- return "procedure";
- case sym_k_identifier_entry:
- return "identifier";
-
-/* These are used by the symbol table dumper. */
-
- case sym_k_argument_entry:
- return "argument";
- case sym_k_callback_entry:
- return "callback";
- case sym_k_control_entry:
- return "control";
- case sym_k_name_entry:
- return "name";
- case sym_k_forward_ref_entry:
- return "forward ref";
- case sym_k_external_def_entry:
- return "external def";
- case sym_k_list_entry:
- return "list";
- case sym_k_root_entry:
- return "root";
- case sym_k_include_file_entry:
- return "include file";
- case sym_k_def_obj_entry:
- return "default variant";
- case sym_k_section_entry:
- return "section";
-
- default:
-#ifndef NO_MESSAGE_CATALOG
- return (catgets(uil_catd, UIL_VALUES, UIL_VAL_1, "** unknown **"));
-#else
- return "** unknown **";
-#endif
- }
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** Each widget in the UIL language has a integer value. Given this
-** value, this routine will return a string that can be substituted
-** in an error message to describe that widget.
-**
-** FORMAL PARAMETERS:
-**
-** b_type integer rep of the widget type
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** char * text corresponding to type
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-char *diag_object_text( b_type )
-
-int XmConst b_type;
-
-{
- if ( b_type <= sym_k_error_object )
-#ifndef NO_MESSAGE_CATALOG
- return (catgets(uil_catd, UIL_VALUES, UIL_VAL_0, "** error **"));
-#else
- return "** error **";
-#endif
- if ( b_type <= uil_max_object )
- return uil_widget_names[b_type];
-#ifndef NO_MESSAGE_CATALOG
- return (catgets(uil_catd, UIL_VALUES, UIL_VAL_1, "** unknown **"));
-#else
- return "** unknown **";
-#endif
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** Each value in the UIL language has a integer value. Given this
-** value, this routine will return a string that can be substituted
-** in an error message to describe that value.
-**
-** FORMAL PARAMETERS:
-**
-** b_type integer rep of the value type
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** char * text corresponding to type
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-char *diag_value_text( b_type )
-
-int XmConst b_type;
-
-{
-
- if ( b_type <= sym_k_error_value )
-#ifndef NO_MESSAGE_CATALOG
- return (catgets(uil_catd, UIL_VALUES, UIL_VAL_0, "** error **"));
-#else
- return "** error **";
-#endif
- if ( b_type <= sym_k_max_value )
- return uil_datatype_names[b_type];
-#ifndef NO_MESSAGE_CATALOG
- return (catgets(uil_catd, UIL_VALUES, UIL_VAL_1, "** unknown **"));
-#else
- return "** unknown **";
-#endif
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** Each charset supported by UIL has a integer value. Given this
-** value, this routine will return a string that can be substituted
-** in an error message to describe that charset.
-**
-** FORMAL PARAMETERS:
-**
-** b_type integer rep of the charset
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** char * text corresponding to type
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-char *diag_charset_text( b_type )
-
-int XmConst b_type;
-
-{
-
- if ( b_type <= sym_k_error_charset )
-#ifndef NO_MESSAGE_CATALOG
- return (catgets(uil_catd, UIL_VALUES, UIL_VAL_0, "** error **"));
-#else
- return "** error **";
-#endif
- if ( b_type <= uil_max_charset )
- return uil_charset_names[b_type];
-#ifndef NO_MESSAGE_CATALOG
- return (catgets(uil_catd, UIL_VALUES, UIL_VAL_1, "** unknown **"));
-#else
- return "** unknown **";
-#endif
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine initializes the diagnostic system. This includes
-** establishes a handler for catastrophic errors and initializing
-** error tables.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** Uil_message_count
-** issuing_diagnostic
-** Uil_diag_status_delay_count
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error handler is supplied for SIGBUS, SIGFPE and SIGSYS errors
-**
-**--
-**/
-
-void diag_initialize_diagnostics()
-
-{
-
- int i;
-
- /*
- ** Set up a handler to be invoked if access violations or
- ** bad arguments to sys calls occur.
- ** Other errors should be processed as is standard for the OS.
- */
-/*
- * Fix for CR 5534 - call diag_store_handlers to save the old signal handlers.
- */
- diag_store_handlers();
-/*
- * End Fix for CR 5534
- */
-
- signal( SIGBUS, diag_handler ); /* access violations */
-#ifdef SIGSYS
- signal( SIGSYS, diag_handler ); /* bad arguments to sys calls */
-#endif
- signal( SIGFPE, diag_handler ); /* overflows */
-
-
- /*
- ** Reset the message counts to zero.
- */
- for (i=0; i <= uil_k_max_status; i++)
- Uil_message_count[ i ] = 0;
-
-
- /*
- ** Clear the flag that we used to detect recursive error reporinting.
- */
- issuing_diagnostic = FALSE;
-
-
- /*
- ** Make sure there is no delay before starting to report status.
- */
- Uil_diag_status_delay_count = 0;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine resets the handler for detecting overflows.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error handler is supplied for SIGFPE
-**
-**--
-**/
-
-void diag_reset_overflow_handler()
-
-{
-
- signal( SIGFPE, diag_handler ); /* overflows */
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine is the handler for internal errors.
-**
-** FORMAL PARAMETERS:
-**
-** l_error type of signal being raised
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** image will exit (done by diag_issue_diagnostic)
-**
-**--
-**/
-
-void diag_handler( l_error )
-
-int l_error;
-
-{
- /*
- ** This handler is invoked for access violations, oeverflows or bad
- ** arguments to sys calls. Other errors are processed as is standard
- ** for the OS. The handler checks on overflow to see if we are trying
- ** to catch them at the moment. Otherwise it issues an internal error.
- */
-
- if (l_error == SIGFPE)
- {
- if (uil_az_error_env_valid)
- {
- longjmp( uil_az_error_env_block, 1);
- }
- }
-
-#if debug_version
- {
- char *error_text;
-
- switch (l_error)
- {
- case SIGBUS:
- error_text = "Access Violation";
- break;
-#ifdef SIGSYS
- case SIGSYS:
- error_text = "Bad system call";
- break;
-#endif
- case SIGFPE:
- error_text = "Overflow";
- break;
- default:
- error_text = "Unknown reason";
- }
-
- diag_issue_internal_error( error_text );
- }
-
-#else
-
- diag_issue_internal_error( NULL );
-
-#endif
-
- /* we don't expect to come back */
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine issues an internal error.
-**
-** FORMAL PARAMETERS:
-**
-** error_text In the debug version this parameter holds a
-** description of the internal error. In the
-** non debug version it is omitted.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** image will exit (done by diag_issue_diagnostic)
-**
-**--
-**/
-
-void diag_issue_internal_error( error_text )
-
-char * error_text;
-
-{
-
- /*
- ** This routine is a focal point for issuing internal errors.
- ** In DEBUG mode it takes an argument that gives more information
- ** about the failure.
- */
-
-#if debug_version
-
- diag_issue_diagnostic
- ( d_bug_check, diag_k_no_source, diag_k_no_column , error_text );
-
-#else
-
- diag_issue_diagnostic( d_submit_spr, diag_k_no_source, diag_k_no_column );
-
-#endif
-
- /* we don't expect to come back */
-
-}
-
-\f
-
-
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** this routine emits a diagnostic to stderr
-**
-** FORMAL PARAMETERS:
-**
-** msg_number: message number
-** src_buffer: ptr to source buffer for the error
-** ptr_buffer: ptr to column buffer locator for the error
-** msg_buffer: ptr to message buffer for the error
-** loc_buffer: ptr to location buffer for the error
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** messages emitted
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-
-static char XmConst success_text[1] = "";
-static char XmConst info_text[7] = "Info: ";
-static char XmConst warning_text[10] = "Warning: ";
-static char XmConst error_text[8] = "Error: ";
-static char XmConst severe_text[9] = "Severe: ";
-
-static char XmConst *severity_table [] =
- { success_text, info_text, warning_text, error_text, severe_text, };
-
-void write_msg_to_standard_error
- (message_number, src_buffer, ptr_buffer, msg_buffer, loc_buffer)
-
-XmConst int message_number;
-XmConst char *src_buffer;
-XmConst char *ptr_buffer;
-XmConst char *msg_buffer;
-XmConst char *loc_buffer;
-
-{
-
- /*
- ** If message callback was supplied, call it with the description of the
- ** error instead of writing it to standard output.
- */
- if (Uil_cmd_z_command.message_cb != (Uil_continue_type(*)())NULL)
- {
- Uil_status_type return_status;
-/*
- * Fix for 5534 - restore the old signal handers before calling message_cb
- * and restore the Uil signal handlers immediately afterwards
- */
- diag_restore_diagnostics();
- return_status = (*Uil_cmd_z_command.message_cb)(
- Uil_cmd_z_command.message_data,
- message_number,
- diag_rz_msg_table[ message_number ].l_severity,
- msg_buffer,
- src_buffer,
- ptr_buffer,
- loc_buffer,
- Uil_message_count);
- diag_store_handlers();
-/*
- * End Fix for 5534
- */
-
- /*
- ** If request is for termination, then longjmp back to main routine
- ** and set the return status to reflect user abort.
- */
- if (return_status == Uil_k_terminate)
- uil_exit (uil_k_error_status);
- else
- return;
- }
-
-
-
- /* print source line */
-
- fprintf ( stderr, "\n" );
-
- if (src_buffer[ 0 ] != 0)
- {
- fprintf ( stderr, "%s\n", src_buffer );
- }
-
- /* print the source column locator line */
-
- if (ptr_buffer[ 0 ] != 0)
- {
- fprintf ( stderr, "%s\n", ptr_buffer );
- }
-
- /* print message line */
-
-#ifndef NO_MESSAGE_CATALOG
- fprintf ( stderr, "%s%s\n",
- catgets(uil_catd, UIL_SET_MISC,
- diag_rz_msg_table[ message_number ].l_severity,
- severity_table
- [ diag_rz_msg_table[ message_number ].l_severity ]),
- msg_buffer );
-#else
- fprintf ( stderr, "%s%s\n",
- severity_table
- [ diag_rz_msg_table[ message_number ].l_severity ],
- msg_buffer );
-#endif
-
- /* print location line */
-
- if (loc_buffer[ 0 ] != 0)
- {
- fprintf ( stderr, "%s\n", loc_buffer );
- }
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** function to return abbreviation for a message number
-**
-** FORMAL PARAMETERS:
-**
-** d_message_number message number to look up
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** ptr to text for message number
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-char XmConst *diag_get_message_abbrev( d_message_number )
-
-int d_message_number;
-
-{
- return
- severity_table[ diag_rz_msg_table[ d_message_number ].l_severity ];
-}
-
-\f
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** Routine to invoke the user-supplied status callback routine. If none
-** is supplied this routine returns without error. Otherwise, the user's
-** delay information is processed and if the requested criteria is met the
-** user's routine is invoked. with parameters to describe the progress of
-** the compilation.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** Uil_cmd_z_command_line
-**
-** IMPLICIT OUTPUTS:
-**
-** Uil_diag_status_delay_count
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void diag_report_status ( )
-
-{
- Uil_continue_type return_status;
-
- /*
- ** If no status callback was supplied, just return.
- */
- if (Uil_cmd_z_command.status_cb == (Uil_continue_type(*)())NULL) return;
-
- /*
- ** If delay is used up (less than or equal to zero) then invoke the
- ** callback, and reset the delay count.
- */
- if (Uil_diag_status_delay_count <= 0)
- {
- Uil_diag_status_delay_count = Uil_cmd_z_command.status_update_delay;
-/*
- * Fix for CR 5534 - restore the application signal handlers before calling
- * status_cb and then return the Uil signal handlers
- * immediately after.
- */
- diag_restore_diagnostics();
- return_status = (*Uil_cmd_z_command.status_cb)(
- Uil_cmd_z_command.status_data,
- Uil_percent_complete,
- Uil_lines_processed,
- Uil_current_file,
- Uil_message_count);
- diag_store_handlers();
-/*
- * End Fix for CR 5534
- */
-
- /*
- ** If request is for termination, then longjmp back to main routine
- ** and set the return status to reflect user abort.
- */
- if (return_status == Uil_k_terminate)
- {
- uil_exit (uil_k_error_status);
- }
- }
-
- /*
- ** Delay not used-up, so decrement by one.
- */
- else
- Uil_diag_status_delay_count--;
-
-}
-
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine restores the old signal handlers that were replaced by
-** Uil. This routine is only called by the callable Uil.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error handlers for SIGBUS, SIGFPE and SIGSYS errors are restored to
-** pre-Uil condition.
-**
-**--
-**/
-
-void
-diag_restore_diagnostics(void)
-{
-
-/*
- * Fix for CR 5534 - restore the old signal handlers
- */
- signal( SIGBUS, bus_handler );
-#ifdef SIGSYS
- signal( SIGSYS, sys_handler );
-#endif
- signal( SIGFPE, fpe_handler );
-/*
- * End Fix for CR 5534
- */
-}
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilIODef.h /main/10 1995/07/14 09:34:21 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file defines the interface to the operating system
-** io facilities.
-**
-**--
-**/
-
-#ifndef UilIODef_h
-#define UilIODef_h
-
-
-/*
-** Define a UIL File Control Block or FCB.
-*/
-
-
-#include <stdio.h>
-#ifndef NULL
-#define NULL 0L
-#endif
-
-typedef struct
-{
- FILE *az_file_ptr;
- char *c_buffer;
- boolean v_position_before_get;
- z_key last_key;
- char expanded_name[ 256 ];
-} uil_fcb_type;
-
-#endif /* UilIODef_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: UilKeyTab.c /main/11 1995/07/14 09:34:29 drk $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contains the keyword table used by the lexical analyzer
-** to look up the keywords in the UIL.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include "UilDefI.h"
-
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-/* Keyword table pointer. */
-
-static key_keytable_entry_type * key_keytable_ptr;
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine searches for a symbol in the compiler's keyword table.
-** There are two arguments to the routine, the length of the symbol and
-** the address of the start of the symbol. The routine returns the
-** address of the keyword entry found, or a NULL pointer if the
-** symbol is not found in the table.
-**
-** The search for the symbol is case sensitive depending upon the
-** keytable binding that was established by the key_initialize routine.
-**
-** The require file UilKeyTab.h defines and initializes the keyword
-** tables. It is built automatically from other files, thus it should
-** not be hand editted.
-**
-** FORMAL PARAMETERS:
-**
-** symbol_length.rl.v : length of symbol to look up
-** symbol_ptr.ra.v : address of symbol to look up
-**
-** IMPLICIT INPUTS:
-**
-** key_keytable_ptr : current keyword table
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** NULL : if the symbol is not in the keyword table
-** otherwise : the address of the keyword table entry for
-** the specified symbol.
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-key_keytable_entry_type *
- key_find_keyword (symbol_length, symbol_ptr)
-
-unsigned int symbol_length;
-char * symbol_ptr;
-
-{
-
- int
- lower_limit,
- upper_limit;
-
-/* Check the arguments. */
-
- if (symbol_length > key_k_keyword_max_length)
- return NULL;
-
-/* Initialize region to search. */
-
- lower_limit = 0;
- upper_limit = key_k_keyword_count-1;
-
-/* Perform binary search on keyword index. */
-
- do {
- int mid_point, result;
-
- key_keytable_entry_type * keyword_entry_ptr;
-
- mid_point = (lower_limit + upper_limit) >> 1; /* divide by 2 */
-
- keyword_entry_ptr = & key_keytable_ptr [mid_point];
-
- result = strcmp (symbol_ptr, keyword_entry_ptr -> at_name);
-
- if (result == 0) {
- return keyword_entry_ptr; /* Found keyword. */
- } else if (result < 0) {
- upper_limit = mid_point - 1; /* Search lower half. */
- } else {
- lower_limit = mid_point + 1; /* Search upper half. */
- }
-
- } while (lower_limit <= upper_limit);
-
-/* If we fall out of the bottom of the loop, symbol was not found. */
-
- return NULL;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine initializes the keyword lookup facility. It can be
-** called multiple times during a single compilation. It must be called
-** at least once before the keyword table is accessed.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** uil_v_case_sensitive : case sensitive switch, determines which
-** : keyword table to use.
-**
-** IMPLICIT OUTPUTS:
-**
-** key_keytable_ptr : pointer to the keyword table to
-** use for keyword lookups.
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-void
- key_initialize ()
-
-{
-
-/* Use the correct keyword table based on the global case
- sensitivity. */
-
- if (uil_v_case_sensitive) {
- key_keytable_ptr = key_table;
- } else {
- key_keytable_ptr = key_table_case_ins;
- }
-
-}
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilLexAna.c /main/14 1997/03/12 15:10:52 dbl $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module hold the routines that build tokens for the UIL
-** compiler.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include <Xm/Xm.h>
-/* I think this one should be public too, it's not the case right now,
- and I don't want to include XmP.h here - dd */
-extern char *_XmStringGetCurrentCharset ();
-#include <Xm/XmosP.h> /* Need this for MB_CUR_MAX */
-
-#include <Mrm/MrmosI.h> /* Need this for _MrmOSSetLocale. */
-
-#include "UilDefI.h"
-#include <ctype.h>
-
-double atof();
-
-#include <errno.h> /* needed to support conversion functions */
-#ifdef X_NOT_STDC_ENV
-extern int errno;
-#endif
-
-/*
-**
-** TABLE OF CONTENTS
-**
-*/
-
-/*
-** FORWARD DECLARATIONS
-*/
-
-typedef struct _lex_buffer_type
-{
- struct _lex_buffer_type *az_next_buffer;
- unsigned char c_text[ 1 ];
-} lex_buffer_type;
-
-
-static lex_buffer_type *get_lex_buffer _ARGUMENTS(( lex_buffer_type *az_current_lex_buffer ));
-#if debug_version
-static void dump_token _ARGUMENTS(( lex_buffer_type *az_current_lex_buffer , int l_lex_pos ));
-#endif
-
-
-/*
-**
-** EXTERNAL DEFINITIONS
-**
-*/
-
-
-/* These values are set by Lex initiailize routine or if the charset */
-/* option is specified on the module declaration */
-externaldef(uil_comp_glbl) int Uil_lex_l_user_default_charset;
-externaldef(uil_comp_glbl) sym_value_entry_type *Uil_lex_az_charset_entry;
-externaldef(uil_comp_glbl) int Uil_lex_l_localized;
-
-
-/* This is the most recent character set recognized by the grammar. It */
-/* allows the use of the CHARACTER_SET function to prefix general string */
-/* literals. */
-externaldef(uil_comp_glbl) int Uil_lex_l_charset_specified;
-externaldef(uil_comp_glbl) int Uil_lex_l_literal_charset;
-externaldef(uil_comp_glbl) sym_value_entry_type *Uil_lex_az_literal_charset;
-/* %COMPLETE */
-externaldef(uil_comp_glbl) int Uil_characters_read;
-
-/* For portability, declare all yy* variables as extern. */
-
-extern yystype yylval;
-extern yystype prev_yylval;
-
-/* This stack entry is used as the result of epsilon productions. */
-
-extern yystype gz_yynullval;
-
-
-/*
- * Retain comments as scanned
- */
-#define INITIAL_COMMENT_SIZE 8000
-#define INCR_COMMENT_SIZE 2000
-
-
-externaldef(uil_comp_glbl) char *comment_text;
-externaldef(uil_comp_glbl) int comment_size;
-
-static int last_token_seen = 0;
-
-
-\f
-/*
-**
-** MACRO DEFINITIONS
-**
-**/
-
-/*
-** Each of the 256 possible input characters has an associated class.
-** These defines gives names to the classes.
-*/
-
-#define class_blank 0 /* white space */
-#define class_punc 1 /* punctuation characters */
-#define class_name 2 /* alphabetics - {eEntvbrf} + {$ _} */
-#define class_e 3 /* e */
-#define class_escape 4 /* n t v b r f */
-#define class_ff 5 /* form feed */
-#define class_digit 6 /* 0..9 */
-#define class_dot 7 /* . */
-#define class_sign 8 /* - + */
-#define class_quote 9 /* ' */
-#define class_bslash 10 /* \ */
-#define class_slash 11 /* / */
-#define class_star 12 /* * */
-#define class_exclam 13 /* ! */
-#define class_eol 14 /* end of line - ascii nul */
-#define class_rest 15 /* remaining printable characters */
-#define class_illegal 16 /* remaining non printable characters */
-#define class_pound 17 /* # */
-#define class_dquote 18 /* " */
-#define class_langle 19 /* < */
-#define class_rangle 20 /* > */
-#define class_highbit 21 /* high order bit set */
-#define max_class 21
-
-/*
-** states within the token table
-*/
-
-#define state_initial 0 /* initial state of automaton */
-#define state_name 1 /* looking for a name */
-#define state_integer 2 /* looking for a integer */
-#define state_real_1 3 /* looking for a real */
-#define state_real_2 4 /* looking for a real */
-#define state_exp_1 5 /* looking for a real with exponent */
-#define state_exp_2 6 /* looking for a real with exponent */
-#define state_exp_3 7 /* looking for a real with exponent */
-#define state_str_1 8 /* looking for a string */
-#define state_str_2 9 /* looking for a string */
-#define state_str_3 10 /* looking for a string */
-#define state_comment_1 11 /* looking for a comment */
-#define state_comment_2 12 /* looking for a comment */
-#define state_comment_3 13 /* looking for a comment */
-#define state_comment_4 14 /* looking for a comment */
-#define state_eat_rest 15 /* eat up rest characters */
-#define state_gstr_1 16 /* looking for a general string */
-#define state_gstr_2 17 /* looking for a general string */
-#define state_gstr_3 18 /* looking for a general string */
-#define state_gstr_4 19 /* looking for a general string */
-#define state_gstr_5 20 /* looking for a general string */
-#define state_langle 21 /* looking for << */
-#define state_rangle 22 /* looking for >> */
-#define max_state 22
-
-/*
-** actions in token table
-** all actions requiring a move of the current character have
-** a negative value
-*/
-
-#define NEGATIVE 0x40
-
-#define min_action 1
-#define move_advance (NEGATIVE | 1) /* save character - goto next state */
-#define advance 1 /* goto next state */
-#define move_final (NEGATIVE | 2) /* save character - found token */
-#define final 2 /* found token */
-#define move_error (NEGATIVE | 3) /* save character - found error */
-#define error 3 /* found error */
-#define move_special (NEGATIVE | 4) /* special action */
-#define special 4 /* save character - special action */
-#define reset 5 /* reset the analyzer */
-#define final_comment (NEGATIVE | 6) /* save whole comment RAP */
-
-/*
-** errors encoded in the token table
-*/
-
-#define min_error 0
-#define bad_prefix 0 /* junk starts a token */
-#define error_max 0
-
-/*
-** final states in the token table
-*/
-
-#define token_min 1
-#define token_punc 1 /* punctuation character */
-#define token_eol 2 /* end of line */
-#define token_real 3 /* real number */
-#define token_integer 4 /* integer */
-#define token_name 5 /* identifier */
-#define token_ustring 6 /* unterminated string */
-#define token_string 7 /* string */
-#define token_ff 8 /* form feed */
-#define token_ugstr 9 /* unterminated general string */
-#define token_gstr 10 /* general string */
-#define token_punc2 11 /* 2 character punctuation */
-#define token_comment 12 /* comment block RAP */
-#define token_lstr 13 /* localized general string */
-#define token_max 13
-
-
-/*
-** special actions that take place
-*/
-
-#define control_char 1 /* unprintable character in construct */
-#define start_bslash 2 /* start of \ construct in string */
-#define ignore_bslash 3 /* \ not followed by correct sequence */
-#define found_digit 4 /* digit in \ sequence */
-#define end_digits 5 /* end of \digit...\ sequence */
-#define insert_char 6 /* end of \x sequence */
-#define missing_bslash 7 /* \ at end of \digit...\ missing */
-#define string_wrap 8 /* string wraps to next line */
-#define comment_wrap 9 /* comment wraps to next line */
-#define charset_gstr 10 /* found char set for general string */
-#define nocharset_gstr 11 /* default char set for general string */
-#define highbit_char 12 /* default char set for general string */
-
-/*
-** define backup field values of a token table cell
-*/
-
-#define not_used 0 /* value not defined for this action */
-#define backup_0 0 /* no backup required */
-#define backup_1 1 /* 1 character backup needed */
-#define backup_2 2 /* 2 character backup needed */
-#define backup_3 3 /* 3 character backup needed */
-
-/*
-** form of each cell in the token table
-*/
-
-\f
-typedef struct
-{
- char action; /* action to be taken */
- char next_state; /* next state */
- /* terminal found */
- /* error found */
- char backup; /* number of character to backup */
- /* action for special cases */
- char unused;
-} cell;
-
-/*
-**
-** OWN Storage for TOKEN BUILDER
-**
-*/
-
-#define l_max_lex_buffer_pos 127
-
-static lex_buffer_type *az_first_lex_buffer;
-
-/*
-** the actual token table
-*/
-
-static cell XmConst token_table[ max_state+1][ max_class+1] =
- {
- { /* state_initial */
- /* class_blank */ { reset, state_initial, not_used },
- /* class_punc */ { move_final, token_punc, backup_0 },
- /* class_name */ { move_advance, state_name, not_used },
- /* class_e */ { move_advance, state_name, not_used },
- /* class_escape */ { move_advance, state_name, not_used },
- /* class_ff */ { final, token_ff, backup_0 },
- /* class_digit */ { move_advance, state_integer, not_used },
- /* class_dot */ { move_advance, state_real_1, not_used },
- /* class_sign */ { move_final, token_punc, backup_0 },
- /* class_quote */ { advance, state_str_1, not_used },
- /* class_bslash */ { move_advance, state_eat_rest, not_used },
- /* class_slash */ { move_advance, state_comment_1, not_used },
- /* class_star */ { move_final, token_punc, backup_0 },
- /* class_exclam */ { move_advance, state_comment_4, not_used },
- /* class_eol */ { final, token_eol, backup_0 },
- /* class_rest */ { move_advance, state_eat_rest, not_used },
- /* class_illegal */ { special, state_initial, control_char },
- /* class_pound */ { move_final, token_punc, backup_0 },
- /* class_dquote */ { special, state_gstr_3, nocharset_gstr },
- /* class_langle */ { move_advance, state_langle, not_used },
- /* class_rangle */ { move_advance, state_rangle, not_used },
- /* class_highbit */ { move_advance, state_eat_rest, not_used },
- },
- { /* state_name */
- /* class_blank */ { final, token_name, backup_0 },
- /* class_punc */ { move_final, token_name, backup_1 },
- /* class_name */ { move_advance, state_name, not_used },
- /* class_e */ { move_advance, state_name, not_used },
- /* class_escape */ { move_advance, state_name, not_used },
- /* class_ff */ { move_final, token_name, backup_1 },
- /* class_digit */ { move_advance, state_name, not_used },
- /* class_dot */ { move_final, token_name, backup_1 },
- /* class_sign */ { move_final, token_name, backup_1 },
- /* class_quote */ { move_final, token_name, backup_1 },
- /* class_bslash */ { move_final, token_name, backup_1 },
- /* class_slash */ { move_final, token_name, backup_1 },
- /* class_star */ { move_final, token_name, backup_1 },
- /* class_exclam */ { move_final, token_name, backup_1 },
- /* class_eol */ { move_final, token_name, backup_1 },
- /* class_rest */ { move_final, token_name, backup_1 },
- /* class_illegal */ { move_final, token_name, backup_1 },
- /* class_pound */ { move_final, token_name, backup_1 },
- /* class_dquote */ { move_final, token_name, backup_1 },
- /* class_langle */ { move_final, token_name, backup_1 },
- /* class_rangle */ { move_final, token_name, backup_1 },
- /* class_highbit */ { move_final, token_name, backup_1 },
- },
- { /* state_integer */
- /* class_blank */ { final, token_integer, backup_0 },
- /* class_punc */ { move_final, token_integer, backup_1 },
- /* class_name */ { move_final, token_integer, backup_1 },
- /* class_e */ { move_final, token_integer, backup_1 },
- /* class_escape */ { move_final, token_integer, backup_1 },
- /* class_ff */ { move_final, token_integer, backup_1 },
- /* class_digit */ { move_advance, state_integer, not_used },
- /* class_dot */ { move_advance, state_real_2, not_used },
- /* class_sign */ { move_final, token_integer, backup_1 },
- /* class_quote */ { move_final, token_integer, backup_1 },
- /* class_bslash */ { move_final, token_integer, backup_1 },
- /* class_slash */ { move_final, token_integer, backup_1 },
- /* class_star */ { move_final, token_integer, backup_1 },
- /* class_exclam */ { move_final, token_integer, backup_1 },
- /* class_eol */ { move_final, token_integer, backup_1 },
- /* class_rest */ { move_final, token_integer, backup_1 },
- /* class_illegal */ { move_final, token_integer, backup_1 },
- /* class_pound */ { move_final, token_integer, backup_1 },
- /* class_dquote */ { move_final, token_integer, backup_1 },
- /* class_langle */ { move_final, token_integer, backup_1 },
- /* class_rangle */ { move_final, token_integer, backup_1 },
- /* class_highbit */ { move_final, token_integer, backup_1 },
- },
- { /* state_real_1 */
- /* class_blank */ { move_advance, state_eat_rest, not_used },
- /* class_punc */ { move_error, bad_prefix, backup_1 },
- /* class_name */ { move_error, bad_prefix, backup_1 },
- /* class_e */ { move_error, bad_prefix, backup_1 },
- /* class_escape */ { move_error, bad_prefix, backup_1 },
- /* class_ff */ { special, state_real_1, control_char },
- /* class_digit */ { move_advance, state_real_2, not_used },
- /* class_dot */ { move_error, bad_prefix, backup_1 },
- /* class_sign */ { move_error, bad_prefix, backup_1 },
- /* class_quote */ { move_error, bad_prefix, backup_1 },
- /* class_bslash */ { move_error, bad_prefix, backup_1 },
- /* class_slash */ { move_error, bad_prefix, backup_1 },
- /* class_star */ { move_error, bad_prefix, backup_1 },
- /* class_exclam */ { move_error, bad_prefix, backup_1 },
- /* class_eol */ { move_error, bad_prefix, backup_1 },
- /* class_rest */ { move_advance, state_eat_rest, not_used },
- /* class_illegal */ { special, state_real_1, control_char },
- /* class_pound */ { move_error, bad_prefix, backup_1 },
- /* class_dquote */ { move_error, bad_prefix, backup_1 },
- /* class_langle */ { move_error, bad_prefix, backup_1 },
- /* class_rangle */ { move_error, bad_prefix, backup_1 },
- /* class_highbit */ { move_advance, state_eat_rest, not_used },
- },
- { /* state_real_2 */
- /* class_blank */ { final, token_real, backup_0 },
- /* class_punc */ { move_final, token_real, backup_1 },
- /* class_name */ { move_final, token_real, backup_1 },
- /* class_e */ { move_advance, state_exp_1, not_used },
- /* class_escape */ { move_final, token_real, backup_1 },
- /* class_ff */ { move_final, token_real, backup_1 },
- /* class_digit */ { move_advance, state_real_2, not_used },
- /* class_dot */ { move_final, token_real, backup_1 },
- /* class_sign */ { move_final, token_real, backup_1 },
- /* class_quote */ { move_final, token_real, backup_1 },
- /* class_bslash */ { move_final, token_real, backup_1 },
- /* class_slash */ { move_final, token_real, backup_1 },
- /* class_star */ { move_final, token_real, backup_1 },
- /* class_exclam */ { move_final, token_real, backup_1 },
- /* class_eol */ { move_final, token_real, backup_1 },
- /* class_rest */ { move_final, token_real, backup_1 },
- /* class_illegal */ { move_final, token_real, backup_1 },
- /* class_pound */ { move_final, token_real, backup_1 },
- /* class_dquote */ { move_final, token_real, backup_1 },
- /* class_langle */ { move_final, token_real, backup_1 },
- /* class_rangle */ { move_final, token_real, backup_1 },
- /* class_highbit */ { move_final, token_real, backup_1 },
- },
- { /* state_exp_1 */
- /* class_blank */ { move_final, token_real, backup_2 },
- /* class_punc */ { move_final, token_real, backup_2 },
- /* class_name */ { move_final, token_real, backup_2 },
- /* class_e */ { move_final, token_real, backup_2 },
- /* class_escape */ { move_final, token_real, backup_2 },
- /* class_ff */ { move_final, token_real, backup_2 },
- /* class_digit */ { move_advance, state_exp_3, not_used },
- /* class_dot */ { move_final, token_real, backup_2 },
- /* class_sign */ { move_advance, state_exp_2, not_used },
- /* class_quote */ { move_final, token_real, backup_2 },
- /* class_bslash */ { move_final, token_real, backup_2 },
- /* class_slash */ { move_final, token_real, backup_2 },
- /* class_star */ { move_final, token_real, backup_2 },
- /* class_exclam */ { move_final, token_real, backup_2 },
- /* class_eol */ { move_final, token_real, backup_2 },
- /* class_rest */ { move_final, token_real, backup_2 },
- /* class_illegal */ { move_final, token_real, backup_2 },
- /* class_pound */ { move_final, token_real, backup_2 },
- /* class_dquote */ { move_final, token_real, backup_2 },
- /* class_langle */ { move_final, token_real, backup_2 },
- /* class_rangle */ { move_final, token_real, backup_2 },
- /* class_highbit */ { move_final, token_real, backup_2 },
- },
- { /* state_exp_2 */
- /* class_blank */ { move_final, token_real, backup_3 },
- /* class_punc */ { move_final, token_real, backup_3 },
- /* class_name */ { move_final, token_real, backup_3 },
- /* class_e */ { move_final, token_real, backup_3 },
- /* class_escape */ { move_final, token_real, backup_3 },
- /* class_ff */ { move_final, token_real, backup_3 },
- /* class_digit */ { move_advance, state_exp_3, not_used },
- /* class_dot */ { move_final, token_real, backup_3 },
- /* class_sign */ { move_final, token_real, backup_3 },
- /* class_quote */ { move_final, token_real, backup_3 },
- /* class_bslash */ { move_final, token_real, backup_3 },
- /* class_slash */ { move_final, token_real, backup_3 },
- /* class_star */ { move_final, token_real, backup_3 },
- /* class_exclam */ { move_final, token_real, backup_3 },
- /* class_eol */ { move_final, token_real, backup_3 },
- /* class_rest */ { move_final, token_real, backup_3 },
- /* class_illegal */ { move_final, token_real, backup_3 },
- /* class_pound */ { move_final, token_real, backup_3 },
- /* class_dquote */ { move_final, token_real, backup_3 },
- /* class_langle */ { move_final, token_real, backup_3 },
- /* class_rangle */ { move_final, token_real, backup_3 },
- /* class_highbit */ { move_final, token_real, backup_3 },
- },
- { /* state_exp_3 */
- /* class_blank */ { final, token_real, backup_0 },
- /* class_punc */ { move_final, token_real, backup_1 },
- /* class_name */ { move_final, token_real, backup_1 },
- /* class_e */ { move_final, token_real, backup_1 },
- /* class_escape */ { move_final, token_real, backup_1 },
- /* class_ff */ { move_final, token_real, backup_1 },
- /* class_digit */ { move_advance, state_exp_3, not_used },
- /* class_dot */ { move_final, token_real, backup_1 },
- /* class_sign */ { move_final, token_real, backup_1 },
- /* class_quote */ { move_final, token_real, backup_1 },
- /* class_bslash */ { move_final, token_real, backup_1 },
- /* class_slash */ { move_final, token_real, backup_1 },
- /* class_star */ { move_final, token_real, backup_1 },
- /* class_exclam */ { move_final, token_real, backup_1 },
- /* class_eol */ { move_final, token_real, backup_1 },
- /* class_rest */ { move_final, token_real, backup_1 },
- /* class_illegal */ { move_final, token_real, backup_1 },
- /* class_pound */ { move_final, token_real, backup_1 },
- /* class_dquote */ { move_final, token_real, backup_1 },
- /* class_langle */ { move_final, token_real, backup_1 },
- /* class_rangle */ { move_final, token_real, backup_1 },
- /* class_highbit */ { move_final, token_real, backup_1 },
- },
- { /* state_str_1 */
- /* class_blank */ { move_advance, state_str_1, not_used },
- /* class_punc */ { move_advance, state_str_1, not_used },
- /* class_name */ { move_advance, state_str_1, not_used },
- /* class_e */ { move_advance, state_str_1, not_used },
- /* class_escape */ { move_advance, state_str_1, not_used },
- /* class_ff */ { special, state_str_1, control_char },
- /* class_digit */ { move_advance, state_str_1, not_used },
- /* class_dot */ { move_advance, state_str_1, not_used },
- /* class_sign */ { move_advance, state_str_1, not_used },
- /* class_quote */ { final, token_string, backup_0 },
- /* class_bslash */ { special, state_str_2, start_bslash },
- /* class_slash */ { move_advance, state_str_1, not_used },
- /* class_star */ { move_advance, state_str_1, not_used },
- /* class_exclam */ { move_advance, state_str_1, not_used },
- /* class_eol */ { move_final, token_ustring, backup_1 },
- /* class_rest */ { move_advance, state_str_1, not_used },
- /* class_illegal */ { special, state_str_1, control_char },
- /* class_pound */ { move_advance, state_str_1, not_used },
- /* class_dquote */ { move_advance, state_str_1, not_used },
- /* class_langle */ { move_advance, state_str_1, not_used },
- /* class_rangle */ { move_advance, state_str_1, not_used },
- /* class_highbit */ { move_advance, state_str_1, not_used },
- },
- { /* state_str_2 */
- /* class_blank */ { move_special, state_str_1, ignore_bslash },
- /* class_punc */ { move_special, state_str_1, ignore_bslash },
- /* class_name */ { move_special, state_str_1, ignore_bslash },
- /* class_e */ { move_special, state_str_1, ignore_bslash },
- /* class_escape */ { special, state_str_1, insert_char },
- /* class_ff */ { special, state_str_1, control_char },
- /* class_digit */ { special, state_str_3, found_digit },
- /* class_dot */ { move_special, state_str_1, ignore_bslash },
- /* class_sign */ { move_special, state_str_1, ignore_bslash },
- /* class_quote */ { special, state_str_1, insert_char },
- /* class_bslash */ { special, state_str_1, insert_char },
- /* class_slash */ { move_special, state_str_1, ignore_bslash },
- /* class_star */ { move_special, state_str_1, ignore_bslash },
- /* class_exclam */ { move_special, state_str_1, ignore_bslash },
- /* class_eol */ { special, state_str_1, string_wrap },
- /* class_rest */ { move_special, state_str_1, ignore_bslash },
- /* class_illegal */ { special, state_str_1, control_char },
- /* class_pound */ { move_special, state_str_1, ignore_bslash },
- /* class_dquote */ { special, state_str_1, insert_char },
- /* class_langle */ { move_special, state_str_1, ignore_bslash },
- /* class_rangle */ { move_special, state_str_1, ignore_bslash },
- /* class_highbit */ { move_special, state_str_1, ignore_bslash },
- },
- { /* state_str_3 */
- /* class_blank */ { move_special, state_str_1, missing_bslash },
- /* class_punc */ { move_special, state_str_1, missing_bslash },
- /* class_name */ { move_special, state_str_1, missing_bslash },
- /* class_e */ { move_special, state_str_1, missing_bslash },
- /* class_escape */ { move_special, state_str_1, missing_bslash },
- /* class_ff */ { special, state_str_1, control_char },
- /* class_digit */ { special, state_str_3, found_digit },
- /* class_dot */ { move_special, state_str_1, missing_bslash },
- /* class_sign */ { move_special, state_str_1, missing_bslash },
- /* class_quote */ { move_special, state_str_1, missing_bslash },
- /* class_bslash */ { special, state_str_1, end_digits },
- /* class_slash */ { move_special, state_str_1, missing_bslash },
- /* class_star */ { move_special, state_str_1, missing_bslash },
- /* class_exclam */ { move_special, state_str_1, missing_bslash },
- /* class_eol */ { move_final, token_ustring, backup_1 },
- /* class_rest */ { move_special, state_str_1, missing_bslash },
- /* class_illegal */ { special, state_str_3, control_char },
- /* class_pound */ { move_special, state_str_1, missing_bslash },
- /* class_dquote */ { move_special, state_str_1, missing_bslash },
- /* class_langle */ { move_special, state_str_1, missing_bslash },
- /* class_rangle */ { move_special, state_str_1, missing_bslash },
- /* class_highbit */ { move_special, state_str_1, missing_bslash },
- },
- { /* state_comment_1 */
- /* class_blank */ { move_final, token_punc, backup_0 },
- /* class_punc */ { move_final, token_punc, backup_1 },
- /* class_name */ { move_final, token_punc, backup_1 },
- /* class_e */ { move_final, token_punc, backup_1 },
- /* class_escape */ { move_final, token_punc, backup_1 },
- /* class_ff */ { special, state_comment_1,control_char },
- /* class_digit */ { move_final, token_punc, backup_1 },
- /* class_dot */ { move_final, token_punc, backup_1 },
- /* class_sign */ { move_final, token_punc, backup_1 },
- /* class_quote */ { move_final, token_punc, backup_1 },
- /* class_bslash */ { move_final, token_punc, backup_1 },
- /* class_slash */ { move_final, token_punc, backup_1 },
- /* class_star */ { move_advance, state_comment_2, not_used },
- /* class_exclam */ { move_final, token_punc, backup_1 },
- /* class_eol */ { move_final, token_punc, backup_1 },
- /* class_rest */ { move_final, token_punc, backup_1 },
- /* class_illegal */ { special, state_comment_1,control_char },
- /* class_pound */ { move_final, token_punc, backup_1 },
- /* class_dquote */ { move_final, token_punc, backup_1 },
- /* class_langle */ { move_final, token_punc, backup_1 },
- /* class_rangle */ { move_final, token_punc, backup_1 },
- /* class_highbit */ { move_final, token_punc, backup_1 },
- },
- { /* state_comment_2 */
- /* class_blank */ { move_advance, state_comment_2, not_used },
- /* class_punc */ { move_advance, state_comment_2, not_used },
- /* class_name */ { move_advance, state_comment_2, not_used },
- /* class_e */ { move_advance, state_comment_2, not_used },
- /* class_escape */ { move_advance, state_comment_2, not_used },
- /* class_ff */ { move_special, state_comment_2,control_char },
- /* class_digit */ { move_advance, state_comment_2, not_used },
- /* class_dot */ { move_advance, state_comment_2, not_used },
- /* class_sign */ { move_advance, state_comment_2, not_used },
- /* class_quote */ { move_advance, state_comment_2, not_used },
- /* class_bslash */ { move_advance, state_comment_2, not_used },
- /* class_slash */ { move_advance, state_comment_2, not_used },
- /* class_star */ { move_advance, state_comment_3, not_used },
- /* class_exclam */ { move_advance, state_comment_2, not_used },
- /* class_eol */ { move_special, state_comment_2,comment_wrap },
- /* class_rest */ { move_advance, state_comment_2, not_used },
- /* class_illegal */ { move_special, state_comment_2,control_char },
- /* class_pound */ { move_advance, state_comment_2, not_used },
- /* class_dquote */ { move_advance, state_comment_2, not_used },
- /* class_langle */ { move_advance, state_comment_2, not_used },
- /* class_rangle */ { move_advance, state_comment_2, not_used },
- /* class_highbit */ { move_advance, state_comment_2, not_used },
- },
- { /* state_comment_3 */
- /* class_blank */ { move_advance, state_comment_2, not_used },
- /* class_punc */ { move_advance, state_comment_2, not_used },
- /* class_name */ { move_advance, state_comment_2, not_used },
- /* class_e */ { move_advance, state_comment_2, not_used },
- /* class_escape */ { move_advance, state_comment_2, not_used },
- /* class_ff */ { move_special, state_comment_2,control_char },
- /* class_digit */ { move_advance, state_comment_2, not_used },
- /* class_dot */ { move_advance, state_comment_2, not_used },
- /* class_sign */ { move_advance, state_comment_2, not_used },
- /* class_quote */ { move_advance, state_comment_2, not_used },
- /* class_bslash */ { move_advance, state_comment_2, not_used },
- /* class_slash */ { final_comment, token_comment, not_used },
- /* class_star */ { move_advance, state_comment_3, not_used },
- /* class_exclam */ { move_advance, state_comment_2, not_used },
- /* class_eol */ { move_special, state_comment_2,comment_wrap },
- /* class_rest */ { move_advance, state_comment_2, not_used },
- /* class_illegal */ { move_special, state_comment_2,control_char },
- /* class_pound */ { move_advance, state_comment_2, not_used },
- /* class_dquote */ { move_advance, state_comment_2, not_used },
- /* class_langle */ { move_advance, state_comment_2, not_used },
- /* class_rangle */ { move_advance, state_comment_2, not_used },
- /* class_highbit */ { move_advance, state_comment_2, not_used },
- },
- { /* state_comment_4 */
- /* class_blank */ { move_advance, state_comment_4, not_used },
- /* class_punc */ { move_advance, state_comment_4, not_used },
- /* class_name */ { move_advance, state_comment_4, not_used },
- /* class_e */ { move_advance, state_comment_4, not_used },
- /* class_escape */ { move_advance, state_comment_4, not_used },
- /* class_ff */ { move_special, state_comment_4,control_char },
- /* class_digit */ { move_advance, state_comment_4, not_used },
- /* class_dot */ { move_advance, state_comment_4, not_used },
- /* class_sign */ { move_advance, state_comment_4, not_used },
- /* class_quote */ { move_advance, state_comment_4, not_used },
- /* class_bslash */ { move_advance, state_comment_4, not_used },
- /* class_slash */ { move_advance, state_comment_4, not_used },
- /* class_star */ { move_advance, state_comment_4, not_used },
- /* class_exclam */ { move_advance, state_comment_4, not_used },
- /* class_eol */ { final_comment, token_comment, backup_1 },
- /* class_rest */ { move_advance, state_comment_4, not_used },
- /* class_illegal */ { move_special, state_comment_4,control_char },
- /* class_pound */ { move_advance, state_comment_4, not_used },
- /* class_dquote */ { move_advance, state_comment_4, not_used },
- /* class_langle */ { move_advance, state_comment_4, not_used },
- /* class_rangle */ { move_advance, state_comment_4, not_used },
- /* class_highbit */ { move_advance, state_comment_4, not_used },
- },
- { /* state_eat_rest */
- /* class_blank */ { move_advance, state_eat_rest, not_used },
- /* class_punc */ { move_error, bad_prefix, backup_1 },
- /* class_name */ { move_error, bad_prefix, backup_1 },
- /* class_e */ { move_error, bad_prefix, backup_1 },
- /* class_escape */ { move_error, bad_prefix, backup_1 },
- /* class_ff */ { special, state_eat_rest, control_char },
- /* class_digit */ { move_error, bad_prefix, backup_1 },
- /* class_dot */ { move_error, bad_prefix, backup_1 },
- /* class_sign */ { move_error, bad_prefix, backup_1 },
- /* class_quote */ { move_error, bad_prefix, backup_1 },
- /* class_bslash */ { move_advance, state_eat_rest, not_used },
- /* class_slash */ { move_error, bad_prefix, backup_1 },
- /* class_star */ { move_advance, state_eat_rest, not_used },
- /* class_exclam */ { move_error, bad_prefix, backup_1 },
- /* class_eol */ { move_error, bad_prefix, backup_1 },
- /* class_rest */ { move_advance, state_eat_rest, not_used },
- /* class_illegal */ { special, state_eat_rest, control_char },
- /* class_pound */ { move_error, bad_prefix, backup_1 },
- /* class_dquote */ { move_error, bad_prefix, backup_1 },
- /* class_langle */ { move_error, bad_prefix, backup_1 },
- /* class_rangle */ { move_error, bad_prefix, backup_1 },
- /* class_highbit */ { move_advance, state_eat_rest, not_used },
- },
- { /* state_gstr_1 */
- /* class_blank */ { move_error, bad_prefix, backup_1 },
- /* class_punc */ { move_error, bad_prefix, backup_1 },
- /* class_name */ { move_advance, state_gstr_2, not_used },
- /* class_e */ { move_advance, state_gstr_2, not_used },
- /* class_escape */ { move_advance, state_gstr_2, not_used },
- /* class_ff */ { special, state_gstr_1, control_char },
- /* class_digit */ { move_error, bad_prefix, backup_1 },
- /* class_dot */ { move_error, bad_prefix, backup_1 },
- /* class_sign */ { move_error, bad_prefix, backup_1 },
- /* class_quote */ { move_error, bad_prefix, backup_1 },
- /* class_bslash */ { move_advance, state_eat_rest, not_used },
- /* class_slash */ { move_error, bad_prefix, backup_1 },
- /* class_star */ { move_advance, state_eat_rest, not_used },
- /* class_exclam */ { move_error, bad_prefix, backup_1 },
- /* class_eol */ { move_error, bad_prefix, backup_1 },
- /* class_rest */ { move_advance, state_eat_rest, not_used },
- /* class_illegal */ { special, state_eat_rest, control_char },
- /* class_pound */ { move_error, bad_prefix, backup_1 },
- /* class_dquote */ { move_error, bad_prefix, backup_1 },
- /* class_langle */ { move_error, bad_prefix, backup_1 },
- /* class_rangle */ { move_error, bad_prefix, backup_1 },
- /* class_highbit */ { move_advance, state_eat_rest, not_used },
- },
- { /* state_gstr_2 */
- /* class_blank */ { move_error, bad_prefix, backup_1 },
- /* class_punc */ { move_error, bad_prefix, backup_1 },
- /* class_name */ { move_advance, state_gstr_2, not_used },
- /* class_e */ { move_advance, state_gstr_2, not_used },
- /* class_escape */ { move_advance, state_gstr_2, not_used },
- /* class_ff */ { special, state_gstr_2, control_char },
- /* class_digit */ { move_advance, state_gstr_2, not_used },
- /* class_dot */ { move_error, bad_prefix, backup_1 },
- /* class_sign */ { move_error, bad_prefix, backup_1 },
- /* class_quote */ { move_error, bad_prefix, backup_1 },
- /* class_bslash */ { move_advance, state_eat_rest, not_used },
- /* class_slash */ { move_error, bad_prefix, backup_1 },
- /* class_star */ { move_advance, state_eat_rest, not_used },
- /* class_exclam */ { move_error, bad_prefix, backup_1 },
- /* class_eol */ { move_error, bad_prefix, backup_1 },
- /* class_rest */ { move_advance, state_eat_rest, not_used },
- /* class_illegal */ { special, state_eat_rest, control_char },
- /* class_pound */ { move_error, bad_prefix, backup_1 },
- /* class_dquote */ { special, state_gstr_3, charset_gstr },
- /* class_langle */ { move_error, bad_prefix, backup_1 },
- /* class_rangle */ { move_error, bad_prefix, backup_1 },
- /* class_highbit */ { move_advance, state_eat_rest, not_used },
- },
- { /* state_gstr_3 */
- /* class_blank */ { move_advance, state_gstr_3, not_used },
- /* class_punc */ { move_advance, state_gstr_3, not_used },
- /* class_name */ { move_advance, state_gstr_3, not_used },
- /* class_e */ { move_advance, state_gstr_3, not_used },
- /* class_escape */ { move_advance, state_gstr_3, not_used },
- /* class_ff */ { special, state_gstr_3, control_char },
- /* class_digit */ { move_advance, state_gstr_3, not_used },
- /* class_dot */ { move_advance, state_gstr_3, not_used },
- /* class_sign */ { move_advance, state_gstr_3, not_used },
- /* class_quote */ { move_advance, state_gstr_3, not_used },
- /* class_bslash */ { special, state_gstr_4, start_bslash },
- /* class_slash */ { move_advance, state_gstr_3, not_used },
- /* class_star */ { move_advance, state_gstr_3, not_used },
- /* class_exclam */ { move_advance, state_gstr_3, not_used },
- /* class_eol */ { move_final, token_ugstr, backup_1 },
- /* class_rest */ { move_advance, state_gstr_3, not_used },
- /* class_illegal */ { special, state_gstr_3, control_char },
- /* class_pound */ { move_advance, state_gstr_3, not_used },
- /* class_dquote */ { final, token_gstr, backup_0 },
- /* class_langle */ { move_advance, state_gstr_3, not_used },
- /* class_rangle */ { move_advance, state_gstr_3, not_used },
- /* class_highbit */ { move_special, state_gstr_3, highbit_char },
- },
- { /* state_gstr_4 */
- /* class_blank */ { move_special, state_gstr_3, ignore_bslash },
- /* class_punc */ { move_special, state_gstr_3, ignore_bslash },
- /* class_name */ { move_special, state_gstr_3, ignore_bslash },
- /* class_e */ { move_special, state_gstr_3, ignore_bslash },
- /* class_escape */ { special, state_gstr_3, insert_char },
- /* class_ff */ { special, state_gstr_3, control_char },
- /* class_digit */ { special, state_gstr_5, found_digit },
- /* class_dot */ { move_special, state_gstr_3, ignore_bslash },
- /* class_sign */ { move_special, state_gstr_3, ignore_bslash },
- /* class_quote */ { special, state_gstr_3, insert_char },
- /* class_bslash */ { special, state_gstr_3, insert_char },
- /* class_slash */ { move_special, state_gstr_3, ignore_bslash },
- /* class_star */ { move_special, state_gstr_3, ignore_bslash },
- /* class_exclam */ { move_special, state_gstr_3, ignore_bslash },
- /* class_eol */ { move_final, token_ugstr, backup_1 },
- /* class_rest */ { move_special, state_gstr_3, ignore_bslash },
- /* class_illegal */ { special, state_gstr_3, control_char },
- /* class_pound */ { move_special, state_gstr_3, ignore_bslash },
- /* class_dquote */ { special, state_gstr_3, insert_char },
- /* class_langle */ { move_special, state_gstr_3, ignore_bslash },
- /* class_rangle */ { move_special, state_gstr_3, ignore_bslash },
- /* class_highbit */ { move_special, state_gstr_3, ignore_bslash },
- },
- { /* state_gstr_5 */
- /* class_blank */ { move_special, state_gstr_3, missing_bslash },
- /* class_punc */ { move_special, state_gstr_3, missing_bslash },
- /* class_name */ { move_special, state_gstr_3, missing_bslash },
- /* class_e */ { move_special, state_gstr_3, missing_bslash },
- /* class_escape */ { move_special, state_gstr_3, missing_bslash },
- /* class_ff */ { special, state_gstr_3, control_char },
- /* class_digit */ { special, state_gstr_5, found_digit },
- /* class_dot */ { move_special, state_gstr_3, missing_bslash },
- /* class_sign */ { move_special, state_gstr_3, missing_bslash },
- /* class_quote */ { move_special, state_gstr_3, missing_bslash },
- /* class_bslash */ { special, state_gstr_3, end_digits },
- /* class_slash */ { move_special, state_gstr_3, missing_bslash },
- /* class_star */ { move_special, state_gstr_3, missing_bslash },
- /* class_exclam */ { move_special, state_gstr_3, missing_bslash },
- /* class_eol */ { move_final, token_ugstr, backup_1 },
- /* class_rest */ { move_special, state_gstr_3, missing_bslash },
- /* class_illegal */ { special, state_str_3, control_char },
- /* class_pound */ { move_special, state_gstr_3, missing_bslash },
- /* class_dquote */ { move_special, state_gstr_3, missing_bslash },
- /* class_langle */ { move_special, state_gstr_3, missing_bslash },
- /* class_rangle */ { move_special, state_gstr_3, missing_bslash },
- /* class_highbit */ { move_special, state_gstr_3, missing_bslash },
- },
- { /* state_langle */
- /* class_blank */ { move_error, bad_prefix, backup_1 },
- /* class_punc */ { move_error, bad_prefix, backup_1 },
- /* class_name */ { move_error, bad_prefix, backup_1 },
- /* class_e */ { move_error, bad_prefix, backup_1 },
- /* class_escape */ { move_error, bad_prefix, backup_1 },
- /* class_ff */ { special, state_langle, control_char },
- /* class_digit */ { move_error, bad_prefix, backup_1 },
- /* class_dot */ { move_error, bad_prefix, backup_1 },
- /* class_sign */ { move_error, bad_prefix, backup_1 },
- /* class_quote */ { move_error, bad_prefix, backup_1 },
- /* class_bslash */ { move_error, bad_prefix, backup_1 },
- /* class_slash */ { move_error, bad_prefix, backup_1 },
- /* class_star */ { move_error, bad_prefix, backup_1 },
- /* class_exclam */ { move_error, bad_prefix, backup_1 },
- /* class_eol */ { move_final, token_ugstr, backup_1 },
- /* class_rest */ { move_advance, state_eat_rest, not_used },
- /* class_illegal */ { special, state_langle, control_char },
- /* class_pound */ { move_error, bad_prefix, backup_1 },
- /* class_dquote */ { move_error, bad_prefix, backup_1 },
- /* class_langle */ { move_final, token_punc2, backup_0 },
- /* class_rangle */ { move_error, bad_prefix, backup_1 },
- /* class_highbit */ { move_error, bad_prefix, backup_1 },
- },
- { /* state_rangle */
- /* class_blank */ { move_error, bad_prefix, backup_1 },
- /* class_punc */ { move_error, bad_prefix, backup_1 },
- /* class_name */ { move_error, bad_prefix, backup_1 },
- /* class_e */ { move_error, bad_prefix, backup_1 },
- /* class_escape */ { move_error, bad_prefix, backup_1 },
- /* class_ff */ { special, state_langle, control_char },
- /* class_digit */ { move_error, bad_prefix, backup_1 },
- /* class_dot */ { move_error, bad_prefix, backup_1 },
- /* class_sign */ { move_error, bad_prefix, backup_1 },
- /* class_quote */ { move_error, bad_prefix, backup_1 },
- /* class_bslash */ { move_error, bad_prefix, backup_1 },
- /* class_slash */ { move_error, bad_prefix, backup_1 },
- /* class_star */ { move_error, bad_prefix, backup_1 },
- /* class_exclam */ { move_error, bad_prefix, backup_1 },
- /* class_eol */ { move_final, token_ugstr, backup_1 },
- /* class_rest */ { move_advance, state_eat_rest, not_used },
- /* class_illegal */ { special, state_langle, control_char },
- /* class_pound */ { move_error, bad_prefix, backup_1 },
- /* class_dquote */ { move_error, bad_prefix, backup_1 },
- /* class_langle */ { move_error, bad_prefix, backup_1 },
- /* class_rangle */ { move_final, token_punc2, backup_0 },
- /* class_highbit */ { move_error, bad_prefix, backup_1 },
- },
- };
-
-\f
-static char class_table[ 256 ] =
- {
-/* 00 */ class_eol, class_illegal, class_illegal, class_illegal,
-/* 04 */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* 08 */ class_illegal, class_blank, class_illegal, class_illegal,
-/* 0C */ class_ff, class_illegal, class_illegal, class_illegal,
-/* 10 */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* 14 */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* 18 */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* 1C */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* 20 */ class_blank, class_exclam, class_dquote, class_pound,
-/* 24 */ class_name, class_rest, class_punc, class_quote,
-/* 28 */ class_punc, class_punc, class_star, class_sign,
-/* 2C */ class_punc, class_sign, class_dot, class_slash,
-/* 30 */ class_digit, class_digit, class_digit, class_digit,
-/* 34 */ class_digit, class_digit, class_digit, class_digit,
-/* 38 */ class_digit, class_digit, class_punc, class_punc,
-/* 3C */ class_langle, class_punc, class_rangle, class_rest,
-/* 40 */ class_rest, class_name, class_name, class_name,
-/* 44 */ class_name, class_e, class_name, class_name,
-/* 48 */ class_name, class_name, class_name, class_name,
-/* 4C */ class_name, class_name, class_name, class_name,
-/* 50 */ class_name, class_name, class_name, class_name,
-/* 54 */ class_name, class_name, class_name, class_name,
-/* 58 */ class_name, class_name, class_name, class_rest,
-/* 5C */ class_bslash, class_rest, class_punc, class_name,
-/* 60 */ class_rest, class_name, class_escape, class_name,
-/* 64 */ class_name, class_e, class_escape, class_name,
-/* 68 */ class_name, class_name, class_name, class_name,
-/* 6C */ class_name, class_name, class_escape, class_name,
-/* 70 */ class_name, class_name, class_escape, class_name,
-/* 74 */ class_escape, class_name, class_escape, class_name,
-/* 78 */ class_name, class_name, class_name, class_punc,
-/* 7C */ class_punc, class_punc, class_punc, class_illegal,
-/* 80 */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* 84 */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* 88 */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* 8C */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* 90 */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* 94 */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* 98 */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* 9C */ class_illegal, class_illegal, class_illegal, class_illegal,
-/* A0 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* A4 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* A8 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* AC */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* B0 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* B4 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* B8 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* BC */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* C0 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* C4 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* C8 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* CC */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* D0 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* D4 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* D8 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* DC */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* E0 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* E4 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* E8 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* EC */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* F0 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* F4 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* F8 */ class_highbit, class_highbit, class_highbit, class_highbit,
-/* FC */ class_highbit, class_highbit, class_highbit, class_highbit
-
- };
-
-
-/* Tables to correlate token numbers and ASCII values for
- punctuation characters. Used by yylex and lex_issue_error. */
-
-#define tok_punc_token_num 17
-static unsigned char punc_char[tok_punc_token_num] = {
- '{', '}', '=', ';', '(', ')', ':', '+', '-',
- ',', '&', '~', '*', '/', '^', '|', '#'};
-static int punc_token[tok_punc_token_num] =
- { LEFT_BRACE,
- RIGHT_BRACE,
- EQUAL_SIGN,
- SEMICOLON,
- LEFT_PAREN,
- RIGHT_PAREN,
- COLON,
- PLUS,
- MINUS,
- COMMA,
- AND,
- NOT,
- MULTIPLY,
- DIVIDE,
- XOR,
- OR,
- POUND };
-
-/* Tables to correlate token numbers and ASCII value pairs for
- punctuation characters. Used by yylex and lex_issue_error. */
-
-static unsigned char punc2_char[2] = {'<', '>'};
-static int punc2_token[2] =
- { LEFT_SHIFT,
- RIGHT_SHIFT };
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function returns the next token to be built in the UIL source
-** program being read by the compiler.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-**
-**
-** IMPLICIT OUTPUTS:
-**
-**
-**
-** FUNCTION VALUE:
-**
-** number of the token generated
-**
-** SIDE EFFECTS:
-**
-**
-**
-**
-**--
-**/
-int yylex()
-{
- unsigned char c_char; /* current character */
- int l_class; /* current character's class */
- int l_state; /* current token_table state */
- int l_lex_pos; /* next available position in c_lex_buffer*/
- cell z_cell; /* local copy of current token_table state*/
- int l_bslash_value; /* current value of \digit...\ construct */
- int l_start_src_pos; /* starting source position of a token */
- int l_charset; /* character set for strings */
- int l_write_direction; /* writing direction */
- int l_parse_direction; /* parsing direction */
- int l_charset_sixteen_bit = FALSE; /* true if charset is 16-bit */
- sym_value_entry_type
- *az_charset_entry; /* value entry for the current charset */
- int l_16bit_char_count = 0; /* for strings, count 16-bit chars */
- int l_16bit_chars_only; /* True if the gstr we are */
- /* processing only has 16-bit chars */
- src_source_record_type
- *az_start_src_record;/* starting source record of a token */
- lex_buffer_type
- *az_current_lex_buffer; /* current lexical buffer */
-
- az_charset_entry = (sym_value_entry_type *) 0;
-
- /*
- ** Call the Status callback routine to report our progress.
- */
- /* %COMPLETE (between 0-50) */
- Uil_percent_complete =
- CEIL((int)( .5 * ((float)Uil_characters_read/(float)Uil_file_size))*100, 50);
- if (Uil_cmd_z_command.status_cb != (Uil_continue_type(*)())NULL)
- diag_report_status();
-
-
-initialize_token_builder:
-
- /* initialize the lexical analyzer by
- * saving starting source position of the token
- * resetting the lexical buffer
- * putting the analyser in its initial state */
-
- az_start_src_record = src_az_current_source_record;
- l_start_src_pos = src_az_current_source_buffer->w_current_position;
-
- az_current_lex_buffer = az_first_lex_buffer;
- l_lex_pos = 0;
- l_charset = lex_k_default_charset;
- l_16bit_chars_only = FALSE;
- l_state = state_initial;
-
- /* start looking for the token */
-
-continue_in_next_state:
-
- for (;;)
- {
- /* get next input char */
- /* advance source too */
- c_char = src_az_current_source_buffer->c_text
- [ src_az_current_source_buffer->w_current_position++ ];
-
- /* %COMPLETE */
- Uil_characters_read++;
-
- l_class = class_table[ c_char ]; /* determine its class */
- z_cell = token_table[ l_state][l_class ]; /* load state cell */
-
- /* pick up the next state, or terminal, or error */
-
- l_state = z_cell.next_state;
-
- /* l_state is negative for action states requiring the current
- * character be saved in the current lexical buffer */
-
- if (z_cell.action & NEGATIVE)
- {
- if (l_lex_pos > l_max_lex_buffer_pos )
- {
- az_current_lex_buffer = get_lex_buffer( az_current_lex_buffer );
- l_lex_pos = 0;
- }
- az_current_lex_buffer->c_text[ l_lex_pos ] = c_char;
- l_lex_pos++;
- }
-
- /* next step is based on action */
-
- switch (z_cell.action)
- {
- case move_advance:
- case advance:
- if (l_16bit_chars_only) goto found_16bit_char;
- continue;
-
- case reset:
-
- goto initialize_token_builder;
-
- case move_final:
- case final:
- case final_comment: /* RAP retain comments */
-
- goto found_token;
-
- case move_error:
- case error:
-
- goto found_error;
-
- case move_special:
- case special:
-
- goto special_processing;
-
- default:
-
- _assert( FALSE, "unknown token_table action" );
-
- }
- }
-
- /* process special actions */
-
-special_processing:
-
- switch (z_cell.backup) /* backup holds special processing code */
- {
- case control_char: /* encountered a control char in a string or
- * comment - issue a diagnotic and continue */
- issue_control_char_diagnostic( c_char );
- break;
-
- case start_bslash: /* start of a \ construct in a string */
-
- l_bslash_value = 0; /* initialize collection cell */
- break;
-
- case found_digit: /* next digit in a \digit...\ sequence */
-
- if (l_bslash_value < 256 ) /* if still in range add in next digit */
- l_bslash_value = l_bslash_value * 10 + ( c_char - 48 );
- break;
-
- case end_digits: /* end of \digit...\ sequence */
-
- if (l_bslash_value >= 256 ) /* issue a diagnostic */
- { diag_issue_diagnostic
- ( d_out_range,
- src_az_current_source_record,
- src_az_current_source_buffer->w_current_position - 1,
- "\\digit...\\ sequence",
- "0-255" );
- l_bslash_value = lex_k_unprint_sub;
- }
-
- if (l_bslash_value == 0 ) /* issue a diagnostic */
- { diag_issue_diagnostic
- ( d_null,
- src_az_current_source_record,
- src_az_current_source_buffer->w_current_position - 1 );
- }
-
- if (l_lex_pos > l_max_lex_buffer_pos )
- {
- az_current_lex_buffer = get_lex_buffer( az_current_lex_buffer );
- l_lex_pos = 0;
- }
- az_current_lex_buffer->c_text[ l_lex_pos++ ] = l_bslash_value;
- break;
-
- case insert_char: /* place special character in lex buffer */
- {
-
- static unsigned char c_bslash_char[10] = {
- '\\', '\'', 'n', 't', 'v', 'b', 'r', 'f', '"'};
- static unsigned char ab_bslash_value[9] =
- { 0x5C, 0x27, 0x0A, 0x09, 0x0B, 0x08, 0x0D, 0x0C, 0x22 };
-
- if (l_lex_pos > l_max_lex_buffer_pos )
- {
- az_current_lex_buffer = get_lex_buffer( az_current_lex_buffer );
- l_lex_pos = 0;
- }
- az_current_lex_buffer->c_text[ l_lex_pos++ ] =
- ab_bslash_value
- [ _index( c_char, c_bslash_char, sizeof( c_bslash_char )-1 )];
- break;
- }
-
- case missing_bslash: /* \digit...\ sequence not terminated */
-
- diag_issue_diagnostic
- ( d_unterm_seq,
- src_az_current_source_record,
- src_az_current_source_buffer->w_current_position - 1,
- "\\digit...\\ sequence",
- "with \\" );
- break;
-
- case ignore_bslash: /* \ not followed by valid character */
-
- diag_issue_diagnostic
- ( d_backslash_ignored,
- src_az_current_source_record,
- src_az_current_source_buffer->w_current_position - 1,
- c_char );
- break;
-
- case string_wrap:
-
- if (src_get_source_line( ) == src_k_end_source)
- {
- diag_issue_diagnostic
- ( d_unterm_seq,
- src_az_current_source_record,
- src_az_current_source_buffer->w_current_position - 1,
- "character string",
- "before end of source" );
-
- src_az_current_source_buffer->w_current_position--;
- }
-
- break;
-
- case comment_wrap:
-
- if (src_get_source_line( ) == src_k_end_source)
- {
- diag_issue_diagnostic
- ( d_unterm_seq,
- src_az_current_source_record,
- src_az_current_source_buffer->w_current_position - 1,
- "comment",
- "before end of source" );
-
- src_az_current_source_buffer->w_current_position--;
- return UILEOF;
- }
- az_current_lex_buffer->
- c_text[strlen((char *)az_current_lex_buffer->c_text)] = '\n';
- break;
-
- case highbit_char: /* check if must accept extra chars */
-found_16bit_char:
- {
- unsigned char next_char;
-
-
- /*
- ** If the current character set allows 16-bit characters, then
- ** process them specially.
- */
- if ( l_charset_sixteen_bit )
- {
- /* need to:
- ** 1) get next input char and advance the source
- ** 2) check that the next is not a control character
- ** 3) place the next character in the lex buffer
- */
-
- next_char = src_az_current_source_buffer->c_text
- [ src_az_current_source_buffer->w_current_position++ ];
-
- switch (class_table[ next_char ])
- {
-
- case class_eol:
- src_az_current_source_buffer->w_current_position--;
- case class_illegal:
- issue_control_char_diagnostic( next_char );
- break;
- default:
- break;
- }
-
- if (l_lex_pos > l_max_lex_buffer_pos )
- {
- az_current_lex_buffer = get_lex_buffer( az_current_lex_buffer );
- l_lex_pos = 0;
- }
-
- az_current_lex_buffer->c_text[ l_lex_pos++ ] = next_char;
- l_16bit_char_count ++;
- }
-
- break;
- }
-
- case charset_gstr: /* set l_charset with the char set */
- {
- _assert( FALSE, "Should never get to charset_gstr" );
- break;
- }
-
- case nocharset_gstr:
- if (Uil_lex_l_charset_specified) {
- /* use the specified charset*/
- l_charset = Uil_lex_l_literal_charset;
- az_charset_entry = Uil_lex_az_literal_charset;
- }
- else if (Uil_lex_l_localized) goto found_localized_string;
- else {
- /* No charset specified, use the default */
- l_charset = Uil_lex_l_user_default_charset;
- az_charset_entry = Uil_lex_az_charset_entry;
- }
-
-
-
- /* Get the charset information */
- sem_charset_info
- (l_charset,
- az_charset_entry,
- &l_write_direction,
- &l_parse_direction,
- &l_charset_sixteen_bit);
-
- /* reset 16 bit character count to 0 */
-
- l_16bit_char_count = 0;
-
- /*
- ** if this is a user-defined, 16-bit charset then treat all
- ** as 16-bit.
- */
- if ((l_charset_sixteen_bit) && (l_charset == lex_k_userdefined_charset))
- l_16bit_chars_only = TRUE;
-
- break;
-
- default:
- _assert( FALSE, "unknown token_table special action" );
-
- }
-
- /* Next state of the token builder is should already be in l_state.
- * Continue at this point */
-
- goto continue_in_next_state;
-
-
-found_localized_string:
- {
- /* Local variables */
- int mb_len, i;
- unsigned char mb_byte;
-
- /* Should be looking at the first byte of the string. */
- /* Localize... */
- _MrmOSSetLocale("");
-
- /* Parse the string. */
- while (TRUE)
- {
- mb_len = mblen((char *)&src_az_current_source_buffer->c_text
- [src_az_current_source_buffer->w_current_position],
- MB_CUR_MAX);
-
- mb_byte = src_az_current_source_buffer->c_text
- [src_az_current_source_buffer->w_current_position];
-
- if (mb_len == 1)
- switch (class_table[mb_byte])
- {
- case class_eol:
- z_cell.backup = backup_0;
- l_state = token_ugstr;
-
- if (l_lex_pos > l_max_lex_buffer_pos )
- {
- az_current_lex_buffer =
- get_lex_buffer( az_current_lex_buffer );
- l_lex_pos = 0;
- }
- az_current_lex_buffer->c_text[ l_lex_pos++ ] = mb_byte;
- _MrmOSSetLocale("C");
- goto found_token;
-
- case class_dquote:
- z_cell.backup = backup_0;
- l_state = token_lstr;
- src_az_current_source_buffer->w_current_position++;
- _MrmOSSetLocale("C");
- goto found_token;
-
- default:
- break;
- }
-
- if (l_lex_pos > l_max_lex_buffer_pos )
- {
- az_current_lex_buffer = get_lex_buffer( az_current_lex_buffer );
- l_lex_pos = 0;
- }
-
- for (i = 0; i < mb_len; i++)
- {
- if (l_lex_pos > l_max_lex_buffer_pos )
- {
- az_current_lex_buffer = get_lex_buffer(az_current_lex_buffer);
- l_lex_pos = 0;
- }
- az_current_lex_buffer->c_text[l_lex_pos++] =
- src_az_current_source_buffer->c_text
- [src_az_current_source_buffer->w_current_position++];
- }
- }
- }
-
-found_token:
-
- /* do any backup of the source buffer position and lex buffer */
-
- src_az_current_source_buffer->w_current_position -= z_cell.backup;
- l_lex_pos -= z_cell.backup;
-
- /* put a null at the end of the current lex buffer */
-
- az_current_lex_buffer->c_text[ l_lex_pos ] = 0;
-
- /* case on the token found */
-
- switch (l_state) /* l_state holds the token found */
- {
- case token_name:
- {
-
- key_keytable_entry_type *az_keyword;
-
- /* check the case sensitivity flag and change case if necessary */
-
- if (! uil_v_case_sensitive)
- {
- char * ptr;
- for ( ptr = (char *)(az_current_lex_buffer->c_text);
- (* ptr) != 0;
- (* ptr) = _upper (* ptr), ptr++)
- {}
- }
-
- /* check if the name is a keyword */
-
- az_keyword =
- key_find_keyword( l_lex_pos, (char *)az_current_lex_buffer->c_text );
- if( az_keyword != NULL)
- {
- /* check that the length of the name is in range */
-
- if (l_lex_pos > key_k_keyword_max_length)
- {
- l_lex_pos = key_k_keyword_max_length;
- az_current_lex_buffer->c_text[ l_lex_pos ] = 0;
- diag_issue_diagnostic
- ( d_name_too_long,
- az_start_src_record,
- l_start_src_pos,
- az_current_lex_buffer->c_text );
- }
-
- yylval.value.az_keyword_entry = az_keyword;
- yylval.b_type = az_keyword->b_token;
- break;
- }
-
- /* process the name as an identifier */
-
- /* check that the length of the identifier is in range */
- /* Added for fix to CR 5566 */
-
- if (l_lex_pos > lex_k_identifier_max_length)
- {
- l_lex_pos = lex_k_identifier_max_length;
- az_current_lex_buffer->c_text[ l_lex_pos ] = 0;
- diag_issue_diagnostic
- ( d_name_too_long,
- az_start_src_record,
- l_start_src_pos,
- lex_k_identifier_max_length,
- az_current_lex_buffer->c_text );
- }
-
- yylval.value.az_symbol_entry =
- (sym_entry_type *) sym_insert_name( l_lex_pos, (char *)az_current_lex_buffer->c_text );
-
- yylval.b_type = NAME;
- break;
- }
-
- case token_punc:
- {
- int l_token;
-
- /* found a punctuation mark - look up its token number in a table */
-
- l_token = punc_token
- [ _index( az_current_lex_buffer->c_text[ 0 ],
- punc_char, sizeof( punc_char )) ];
- yylval.b_type = l_token;
-
- break;
- }
-
- case token_punc2:
- {
- int l_token;
-
- /* found a punctuation mark - look up its token number in a table */
-
- l_token = punc2_token
- [ _index( az_current_lex_buffer->c_text[ 0 ],
- punc2_char, sizeof( punc2_char )) ];
- yylval.b_type = l_token;
-
- break;
- }
-
- case token_eol:
-
- /* if there is no more source
- * then return an end of file
- * otherwise go look for the next token */
-
- if (src_get_source_line( ) == src_k_end_source)
- return UILEOF;
-
- goto initialize_token_builder;
-
- case token_integer:
- {
- long l_integer;
-
- yylval.b_type = UNS_INT_LITERAL;
-
- /* convert the text to binary
- * the sign of the number is applied as part of semantic
- * analysis; thus we only handle integers in range 0..2**31-1
- */
-
- errno = 0;
- l_integer = cvt_ascii_to_long(az_current_lex_buffer->c_text);
-
- if (errno != 0)
- diag_issue_diagnostic
- ( d_out_range,
- az_start_src_record,
- l_start_src_pos,
- "integer",
- " " );
-
- yylval.value.az_symbol_entry =
- (sym_entry_type *)sem_create_value_entry
- ( (char *)&l_integer, sizeof( long ), sym_k_integer_value );
- break;
- }
-
- case token_ustring:
-
- diag_issue_diagnostic
- ( d_unterm_seq,
- src_az_current_source_record,
- src_az_current_source_buffer->w_current_position - 1,
- "character string",
- "before end of line" );
-
- case token_comment: /* RAP preserve comments */
- {
- int size;
-
- if (last_token_seen != token_comment)
- comment_text[0]=0;
-
- size = (int)strlen((char *)az_current_lex_buffer->c_text)+1;
- if ((size + (int)strlen (comment_text)) >= comment_size)
- {
- comment_text = XtRealloc(comment_text, INCR_COMMENT_SIZE + strlen(comment_text));
- comment_size = INCR_COMMENT_SIZE + strlen (comment_text);
- }
-
- strcat (comment_text, (char *)az_current_lex_buffer->c_text);
- strcat (comment_text, "\n");
- last_token_seen = token_comment;
- goto initialize_token_builder;
- }
-
-
- case token_string:
-found_primitive_string:
- {
- int l_length;
- lex_buffer_type *az_lex_buffer;
- sym_value_entry_type *az_value;
- unsigned char *c_char;
-
- l_length = l_lex_pos;
-
- for (az_lex_buffer = az_first_lex_buffer;
- az_lex_buffer != az_current_lex_buffer;
- az_lex_buffer = az_lex_buffer->az_next_buffer)
- l_length = l_length + l_max_lex_buffer_pos + 1;
-
- az_value = create_str_entry( l_length, l_charset, az_charset_entry );
-
- c_char = (unsigned char *)az_value->value.c_value;
-
- for (az_lex_buffer = az_first_lex_buffer;
- az_lex_buffer != az_current_lex_buffer;
- az_lex_buffer = az_lex_buffer->az_next_buffer)
- {
- _move( c_char, az_lex_buffer->c_text, l_max_lex_buffer_pos + 1);
- c_char = c_char + l_max_lex_buffer_pos + 1;
- }
-
- _move( c_char, az_lex_buffer->c_text, l_lex_pos );
-
- yylval.value.az_symbol_entry = (sym_entry_type *) az_value;
- yylval.b_type = CHAR_8_LITERAL;
-
- break;
- }
-
- case token_real:
- {
- double d_real;
-
- yylval.b_type = UNS_FLOAT_LITERAL;
-
- errno = 0;
- d_real = atof((char *)az_current_lex_buffer->c_text);
-
- if (errno != 0)
- diag_issue_diagnostic
- ( d_out_range,
- az_start_src_record,
- l_start_src_pos,
- "real",
- " " );
-
- yylval.value.az_symbol_entry =
- (sym_entry_type *)sem_create_value_entry
- ( (char *)&d_real, sizeof( double ), sym_k_float_value );
- break;
- }
-
- case token_ff:
-
- if (l_start_src_pos != 0)
- issue_control_char_diagnostic( c_char );
-
- src_az_current_source_record->b_flags |= src_m_form_feed;
-
- goto initialize_token_builder;
-
- case token_ugstr:
-
- diag_issue_diagnostic
- ( d_unterm_seq,
- src_az_current_source_record,
- src_az_current_source_buffer->w_current_position - 1,
- "character string",
- "before end of line" );
-
- case token_gstr:
-
- /*
- ** Some general strings require special processing. Those
- ** that do not can go thru the normal string code.
- */
- if ( l_parse_direction == XmSTRING_DIRECTION_R_TO_L )
- {
- int i,j;
- unsigned char tmp1;
- unsigned char tmp2;
-
- /* assuming the string is confined to a single lex buffer. */
- /* just flip the characters around. 16-bit characters need to */
- /* be done in groups of two bytes */
- if (l_charset_sixteen_bit != TRUE)
- /*
- ** Just reverse the bytes from the first to last
- */
- for (i=0, j=l_lex_pos-1; i < (l_lex_pos>>1); i++,j--)
- {
- tmp1 = az_current_lex_buffer->c_text[ i ];
- az_current_lex_buffer->c_text[ i ] =
- az_current_lex_buffer->c_text[ j ];
- az_current_lex_buffer->c_text[ j ] = tmp1;
- }
-
- /*
- ** Don't reverse the string if have less than 2 characters (4 bytes)
- */
- else if ((l_lex_pos>>1) > 1)
- /*
- ** This reversing doesn't work for mixed 8/16-bit character
- ** sets, but only built-in character sets allow mixing and
- ** they are not right-to-left. We do the same copying as in
- ** the 8-bit case above, but we move two bytes at a time and
- ** reverse the order as we copy so they end up correct.
- */
- for (i=0, j=l_lex_pos-1; i < (l_lex_pos>>1); i+=2,j-=2)
- {
- tmp1 = az_current_lex_buffer->c_text[ i ];
- tmp2 = az_current_lex_buffer->c_text[ i + 1 ];
- az_current_lex_buffer->c_text[ i ] =
- az_current_lex_buffer->c_text[ j - 1 ];
- az_current_lex_buffer->c_text[ i + 1 ] =
- az_current_lex_buffer->c_text[ j ];
- az_current_lex_buffer->c_text[ j ] = tmp2;
- az_current_lex_buffer->c_text[ j - 1 ] = tmp1;
- }
- }
-
-
- /*
- ** If the string isn't 16-bit or it is userdefined and thus
- ** cannot be mixed 8/16-bit then we can just make a primitive
- ** string.
- */
- if ((l_charset_sixteen_bit != TRUE) ||
- (l_charset == lex_k_userdefined_charset))
- goto found_primitive_string;
- else
- {
-
- sym_value_entry_type *cstr_entry;
- sym_value_entry_type *str_entry;
- int a_off, off;
-
- /*
- ** if string consists solely of 8-bit ascii characters,
- ** l_16bit_char_count will be zero.
- ** if string consists solely of 16 bit characters,
- ** l_16bit_char_count*2 will equal l_lex_pos.
- ** In either of these cases, the result is still a
- ** primitive string.
- */
-
- /*
- ** For KANJI and HANZI treat 8-bit characters as ISO_LATIN1.
- */
- if (l_16bit_char_count == 0)
- {
- l_charset = uil_sym_isolatin1_charset;
- goto found_primitive_string;
- }
-
- /*
- ** If the string only contains 16-bit characters,
- ** it still can be stored as a primitive string.
- */
- if ((l_16bit_char_count<<1) == l_lex_pos)
- goto found_primitive_string;
-
-
- /*
- ** lex buffer is a mix of 8 and 16 bit characters.
- ** need to build a compound string.
- */
-
- cstr_entry = sem_create_cstr();
-
- for ( a_off = 0,
- off = 0;
- off < l_lex_pos;
- )
-
- {
-
- for (off = a_off; off < l_lex_pos; off++)
- if (az_current_lex_buffer->c_text[ off ] > 0x97)
- break;
-
-/*
- * Create the 8 bit string with iso_latin1
- */
-
- if (off > a_off)
- {
- str_entry = create_str_entry
- ( off - a_off,
- uil_sym_isolatin1_charset,
- az_charset_entry );
-
- _move( str_entry->value.c_value,
- &az_current_lex_buffer->c_text[ a_off ],
- off-a_off );
-
- sem_append_str_to_cstr( cstr_entry, str_entry, TRUE );
- }
-
- for (a_off = off; a_off < l_lex_pos; a_off += 2)
- if (az_current_lex_buffer->c_text[ a_off ] <= 0x97)
- break;
-
-/*
- * Create the 16 bit string with its charset
- */
-
- if (a_off > off)
- {
- str_entry =
- create_str_entry( a_off - off, l_charset, az_charset_entry );
-
- _move( str_entry->value.c_value,
- &az_current_lex_buffer->c_text[ off ],
- a_off-off );
-
- sem_append_str_to_cstr( cstr_entry, str_entry, TRUE );
- }
-
- }
-
- yylval.value.az_symbol_entry = (sym_entry_type *)cstr_entry;
- yylval.b_type = COMP_STRING;
-
- }
- break;
-
- case token_lstr:
- {
- int l_length = 0;
- lex_buffer_type *az_lex_buffer;
- sym_value_entry_type *str_entry;
- unsigned char *c_char;
-
- l_length = l_lex_pos;
-
- for (az_lex_buffer = az_first_lex_buffer;
- az_lex_buffer != az_current_lex_buffer;
- az_lex_buffer = az_lex_buffer->az_next_buffer)
- l_length = l_length + l_max_lex_buffer_pos + 1;
-
- str_entry = create_str_entry(l_length, lex_k_fontlist_default_tag,
- az_charset_entry );
-
- c_char = (unsigned char *)str_entry->value.c_value;
-
- for (az_lex_buffer = az_first_lex_buffer;
- az_lex_buffer != az_current_lex_buffer;
- az_lex_buffer = az_lex_buffer->az_next_buffer)
- {
- _move( c_char, az_lex_buffer->c_text, l_max_lex_buffer_pos + 1);
- c_char = c_char + l_max_lex_buffer_pos + 1;
- }
-
- _move( c_char, az_lex_buffer->c_text, l_lex_pos );
-
- yylval.value.az_symbol_entry = (sym_entry_type *)str_entry;
- yylval.b_type = LOC_STRING;
-
- break;
- }
-
- default:
- _assert( FALSE, "unknown token table final state" );
- }
-
-/* RAP we want to keep track of whether we are appending sequential comments */
- last_token_seen = l_state;
-
- /* set position information in token value */
-
- yylval.az_source_record = az_start_src_record;
- yylval.b_source_pos = l_start_src_pos;
- yylval.b_source_end = src_az_current_source_buffer->w_current_position; /* was "l_start_src_pos + l_lex_pos;" */
- yylval.b_tag = sar_k_token_frame;
-
- /* dump the token if requested */
-
-#if debug_version
- if (uil_v_dump_tokens)
- dump_token( az_current_lex_buffer, l_lex_pos );
-#endif
-
- /*
- ** save this token
- */
-
- prev_yylval = yylval;
-
- /* return the token generated */
-
- return yylval.b_type;
-
-found_error:
-
- /* do any backup of the source buffer position and lex buffer */
-
- src_az_current_source_buffer->w_current_position -= z_cell.backup;
- l_lex_pos -= z_cell.backup;
-
- /* put a null at the end of the current lex buffer */
-
- az_current_lex_buffer->c_text[ l_lex_pos ] = 0;
-
- /* case on the type of error */
-
- switch (l_state) /* contains the type of error */
- {
- case bad_prefix:
-
- /* printable characters that are not part of a token were found */
-
- diag_issue_diagnostic
- ( d_unknown_seq,
- az_start_src_record,
- l_start_src_pos,
- az_current_lex_buffer->c_text );
-
- break;
-
- default:
- _assert( FALSE, "unknown token table error state" );
- break;
- }
-
- goto initialize_token_builder;
-
- }
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function initializes the lexical analyzer.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** az_first_lex_buffer
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** lexical buffer is allocated
-**
-**--
-**/
-
-#define UNSCHAR_MINUS_ONE (unsigned char) 255;
-
-void lex_initialize_analyzer( )
-
-{
-String language;
-
-/* RAP preserve comments */
-comment_text = (char *) _get_memory(INITIAL_COMMENT_SIZE);
-comment_size = INITIAL_COMMENT_SIZE;
-
-comment_text[0] = '\0';
-
-/* BEGIN OSF Fix CR 4749 */
-/* The lex algorithm has the potential to write
- * into index l_max_lex_buffer_pos + 1, so allocate l_max_lex_buffer_pos
- * plus 2 positions in buffer.
- */
-az_first_lex_buffer =
- (lex_buffer_type *) _get_memory (l_max_lex_buffer_pos + 2 +
- sizeof(lex_buffer_type *));
-/* END OSF Fix CR 4749 */
-az_first_lex_buffer->az_next_buffer = NULL;
-
-/* Initialize the stack frame entry for epsilon productions. */
-
-gz_yynullval.b_tag = sar_k_null_frame;
-
-/* Initialize the default character set */
-
-language = (char *) _XmStringGetCurrentCharset();
-if ( language == NULL )
- Uil_lex_l_user_default_charset = lex_k_default_charset;
-else
- {
- Uil_lex_l_user_default_charset = sem_charset_lang_name (language);
- if (Uil_lex_l_user_default_charset == sym_k_error_charset)
- {
- diag_issue_diagnostic
- ( d_bad_lang_value,
- diag_k_no_source,
- diag_k_no_column);
- Uil_lex_l_user_default_charset = lex_k_default_charset;
- }
- }
-Uil_lex_az_charset_entry = NULL;
-
-/* Determine if localized strings are possible */
-if (Uil_cmd_z_command.v_use_setlocale == FALSE)
- Uil_lex_l_localized = FALSE;
-else
- {
- Uil_lex_l_localized = TRUE;
- _MrmOSSetLocale("C");
- }
-
-/* Initialize the current character set */
-Uil_lex_l_charset_specified = FALSE;
-
-/* Initialize the source position and record */
-
-prev_yylval.b_source_end = UNSCHAR_MINUS_ONE;
-prev_yylval.az_source_record = src_az_current_source_record;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function performs the cleanup processing of the lexical analyzer.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** az_first_lex_buffer
-**
-** IMPLICIT OUTPUTS:
-**
-** az_first_lex_buffer
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** lexical buffer is freed
-**
-**--
-**/
-
-void Uil_lex_cleanup_analyzer( )
-
-{
- /* pointer to next buffer to free */
- lex_buffer_type *az_buffer_to_free;
-
- /* Loop through the list of buffers freeing them all */
- while (az_first_lex_buffer != NULL) {
- az_buffer_to_free = az_first_lex_buffer;
- az_first_lex_buffer = az_first_lex_buffer->az_next_buffer;
- _free_memory((char*)az_buffer_to_free);
- }
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function issues a syntax error. It is called from the
-** error handling mechanism in the parser.
-**
-** FORMAL PARAMETERS:
-**
-** restart_token the token number for the punctuation
-** character where parsing will resume after
-** this error is issued.
-**
-** IMPLICIT INPUTS:
-**
-** current lex buffer
-** punc_token and punc_char tables
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** issue a diagnostic
-**
-**--
-**/
-
-void lex_issue_error( restart_token )
-
-int restart_token;
-
-{
-
- int i, token_num;
- unsigned char c_char = '.';
- char * tok_name;
-
-/* Find the token number for the restart character in the table.
- It should be there. Get the corresponding character for this
- token. */
-
- for ( i = 0 ; i<tok_punc_token_num ; i++ )
- {
- if (restart_token == punc_token [i])
- {
- c_char = punc_char [i];
- break;
- }
- }
-
-/* Get the text of the token name which caused the error. */
-
- token_num = yylval.b_type;
- if ( (token_num < 0) || (token_num > tok_num_tokens) )
- tok_name = "UNKNOWN_TOKEN";
- else
- tok_name = tok_token_name_table[token_num];
-
-/* Issue the error. */
-
- diag_issue_diagnostic
- (d_syntax,
- yylval.az_source_record,
- yylval.b_source_pos,
- tok_name,
- c_char);
-
-}
-
-\f
-
-/*
-**
-** LOCAL FUNCTIONS
-**
-*/
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** Issue an error for an illegal control character.
-**
-** FORMAL PARAMETERS:
-**
-** c_char
-**
-** IMPLICIT INPUTS:
-**
-** current source position
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** issue a diagnostic
-**
-**--
-**/
-
-void issue_control_char_diagnostic
-
- (unsigned char c_char )
-
-{
-
- diag_issue_diagnostic
- ( d_control_char,
- src_az_current_source_record,
- src_az_current_source_buffer->w_current_position - 1,
- c_char );
-
- src_az_current_source_record->b_flags |= src_m_unprintable_chars;
-
- return;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function obtains another lexical buffer.
-**
-** FORMAL PARAMETERS:
-**
-** az_current_lex_buffer
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** address of a new lexical buffer
-**
-** SIDE EFFECTS:
-**
-** another lexical buffer may be allocated
-**
-**--
-**/
-
-static lex_buffer_type *get_lex_buffer( az_current_lex_buffer )
-
-lex_buffer_type *az_current_lex_buffer;
-
-{
- lex_buffer_type *az_lex_buffer;
-
- /* check to see if another buffer is available - if not allocate one */
-
- az_lex_buffer = az_current_lex_buffer->az_next_buffer;
-
- if (az_lex_buffer == NULL)
- {
-/* BEGIN OSF Fix CR 4749 */
- /* The lex algorithm has the potential to write
- * into index l_max_lex_buffer_pos + 1, so allocate l_max_lex_buffer_pos
- * plus 2 positions in buffer.
- */
- az_lex_buffer =
- (lex_buffer_type *)_get_memory( l_max_lex_buffer_pos + 2 +
- sizeof(lex_buffer_type *));
-/* END OSF Fix CR 4749 */
- az_current_lex_buffer->az_next_buffer = az_lex_buffer;
- az_lex_buffer->az_next_buffer = NULL;
- }
-
- return az_lex_buffer;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure will change all the unprintable characters in
-** a buffer to lex_k_unprint_sub.
-**
-** FORMAL PARAMETERS:
-**
-** buffer buffer to be checked
-** length length of the buffer
-** flags lex_m_filter_xxx flags to indicate if additional
-** characters should be filtered.
-**
-** IMPLICIT INPUTS:
-**
-** class_table gives the unprintable characters
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void lex_filter_unprintable_chars
-(unsigned char *buffer,
- int length,
- unsigned long flags )
-{
- int i;
-
- for (i=0; i<length; i++)
- {
- if ((class_table[ buffer[ i ] ] == class_illegal) ||
- (buffer[ i ] == 12) || /* form feed */
- (buffer[ i ] == 0) || /* null */
- ( (flags & lex_m_filter_tab)
- && buffer[ i ] == 9 )/* horizontal tab */
- )
- buffer[ i ] = lex_k_unprint_sub;
- }
-
-}
-
-\f
-#if debug_version
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure will dump a token.
-**
-** FORMAL PARAMETERS:
-**
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-**
-** SIDE EFFECTS:
-**
-**
-**--
-**/
-
-static void dump_token( az_current_lex_buffer,
- l_lex_pos)
-
-lex_buffer_type *az_current_lex_buffer;
-int l_lex_pos;
-{
- unsigned char c_buffer[l_max_lex_buffer_pos +2];
- lex_buffer_type *az_lex_buffer;
- int i;
- int last;
- int last_buffer;
- unsigned char c_char;
-
-
- _debug_output
- ("token: %d start: %d, %d end: %d, %d \n",
- yylval.b_type,
- yylval.az_source_record->w_line_number,
- yylval.b_source_pos,
- src_az_current_source_record->w_line_number,
- src_az_current_source_buffer->w_current_position );
-
- for (az_lex_buffer = az_first_lex_buffer;
- ;
- az_lex_buffer = az_lex_buffer->az_next_buffer)
- {
- last_buffer = ( az_lex_buffer == az_current_lex_buffer );
- if (last_buffer)
- last = l_lex_pos;
- else
- last = l_max_lex_buffer_pos+1;
-
- _move( c_buffer, az_lex_buffer->c_text, last );
-
- lex_filter_unprintable_chars (c_buffer, last, 0);
-
- c_buffer[ last ] = 0;
- _debug_output("%s \n", c_buffer);
-
- if (last_buffer)
- return;
- }
-}
-#endif
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function converts a null terminated string to a
-** longword integer in the range 0..2**31-1. If the ascii value is
-** outside that range, the external variable errno is set to ERANGE
-** and the value returned is 2**31-1
-**
-** FORMAL PARAMETERS:
-**
-** c_text null terminate string holding integer in ascii
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** errno set if overflow occurs
-**
-** FUNCTION VALUE:
-**
-** long integer value of c_text
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-#define k_max_int 2147483647
-#define k_max_div_10 214748364
-
-long cvt_ascii_to_long(c_text)
-unsigned char XmConst *c_text;
-{
- unsigned long l_value;
- int pos;
-
- l_value = 0;
- for (pos = 0; c_text[ pos ] != 0; pos++)
- {
- if (l_value >= k_max_div_10)
- goto potential_overflow;
- l_value = (l_value * 10) + c_text[ pos ] - '0';
- }
-
- return l_value;
-
-potential_overflow:
- if (l_value > k_max_div_10)
- {
- errno = ERANGE;
- return k_max_int;
- }
-
- l_value = (l_value * 10) + c_text[ pos ] - '0';
-
- if (l_value > k_max_int)
- {
- errno = ERANGE;
- return k_max_int;
- }
-
- return l_value;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function creates a symbol entry for a primitive string.
-**
-** FORMAL PARAMETERS:
-**
-** l_size number of bytes to allocate
-** l_charset charset of the string (token value)
-** az_charset_entry charset of the string (symbol table value entry)
-**
-** IMPLICIT INPUTS:
-**
-** yylval
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** symbol node created
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-sym_value_entry_type *create_str_entry (l_size, l_charset, az_charset_entry)
-
- int l_size;
- int l_charset;
- sym_value_entry_type *az_charset_entry;
-
-
-{
-
- sym_value_entry_type *node;
- int charset; /* from sym_k_..._charset */
- unsigned char direction; /* writing direction */
-
- /*
- * Determine character set and writing direction
- */
- if (l_charset != lex_k_userdefined_charset)
- {
- charset = sem_map_subclass_to_charset( l_charset );
- direction = charset_writing_direction_table[charset];
- }
- else
- {
- charset = sym_k_userdefined_charset;
- direction = az_charset_entry->b_direction;
- }
-
-
- /* size of entry
- * sym_k_value_entry for common part of a value entry
- * l_size for the string
- * 1 for the null on string
- */
-
- node = (sym_value_entry_type *)
- sem_allocate_node
- ( sym_k_value_entry,
- sym_k_value_entry_size );
-
- node->value.c_value = XtCalloc(1, l_size + 1);
-
- node->header.az_src_rec = yylval.az_source_record;
- node->header.b_src_pos = yylval.b_source_pos;
- node->header.b_end_pos = yylval.b_source_end;
-
- node->b_type = sym_k_char_8_value;
- node->w_length = l_size;
- node->b_charset = charset;
- node->b_direction = direction;
- node->az_charset_value = az_charset_entry;
- node->obj_header.b_flags = sym_m_private | sym_m_builtin;
-
- return node;
-
- }
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilLexDef.h /main/11 1995/07/14 09:34:58 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file defines the interface to the UIL lexical
-** analyzer.
-**
-**--
-**/
-
-#ifndef UilLexDef_h
-#define UilLexDef_h
-
-
-/*
-** Define flags to indicate whether certain characters are to be
-** filtered in text output.
-*/
-
-#define lex_m_filter_tab (1 << 0)
-
-/*
-** Define the default character set. In Motif, the default character set is
-** not isolatin1, but simply the null string, thus we must be able to
-** distinguish the two.
-*/
-
-
-#define lex_k_default_charset -1
-#define lex_k_userdefined_charset -2
-#define lex_k_fontlist_default_tag -3
-
-/*
-** Since key_k_keyword_max_length assumes the length of the longest
-** WML generated keyword, we need a new constant to define the
-** longest allowable identifier. This length should not exceed
-** URMMaxIndexLen. (CR 5566)
-*/
-
-#define lex_k_identifier_max_length 31
-
-#endif /* UilLexDef_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilLstLst.c /main/20 1999/07/21 09:03:16 vipin $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contains the procedures for managing the UIL listing.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include <X11/Intrinsic.h>
-#include <Xm/Xm.h>
-
-#include <stdarg.h>
-
-#include "UilDefI.h"
-
-
-/*
-**
-** EXTERNAL storage used by the listing
-**
-*/
-
-
-/*
-**
-** OWN storage used by the listing
-**
-*/
-
-externaldef(uil_comp_glbl) char Uil_lst_c_title2[132];
-
-static int lst_l_usable_lines;
-static int lst_l_lines_left;
-static int lst_l_page_no;
-static char lst_c_title1[132];
-static uil_fcb_type *lst_az_fcb;
-static boolean lst_v_listing_open = FALSE;
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function opens the UIL listing file to be written and
-** initializes OWN storage used by the listing package.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** lst_l_usable_lines number of usable lines per page
-** lst_l_lines_left number of lines left on page
-** lst_l_page_no current page number
-** lst_c_title1 title line 1
-** Uil_lst_c_title2 title line 2
-** lst_v_listing_open can the listing be written to
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** listing file is opened
-**
-**--
-**/
-
-void lst_open_listing()
-{
- status open_status;
- _Xctimeparams ctime_buf;
-
- /* allocate fcb */
-
- lst_az_fcb = (uil_fcb_type *)_get_memory( sizeof( uil_fcb_type ) );
-
- /* open the listing file */
-
- open_status =
- create_listing_file( lst_az_fcb );
-
- if ( open_status == src_k_open_error )
- {
- diag_issue_diagnostic( d_listing_open,
- diag_k_no_source, diag_k_no_column,
- lst_az_fcb->expanded_name );
- /* should never return - error is fatal */
-
- return;
- }
-
- lst_l_lines_left = 0;
- lst_l_page_no = 0;
- lst_v_listing_open = TRUE;
-
- sprintf(lst_c_title1,
- "%s %s \t%s\t\t Page ",
- _host_compiler, _compiler_version,
- current_time(&ctime_buf));
-
- /*
- ** Haven't parsed the module yet.
- ** UilSarMod.c routines will fill it in.
- */
-
- Uil_lst_c_title2[ 0 ] = 0;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function does the clean up processing for the listing facility.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** lst_c_title1 title line 1
-** Uil_lst_c_title2 title line 2
-** lst_v_listing_open can the listing be written to
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** dynamic memory is freed
-**
-**--
-**/
-
-void Uil_lst_cleanup_listing()
-{
- /*
- ** Check that there is a listing file requested and that
- ** it is not already in error.
- */
-
- if (!(lst_v_listing_open && Uil_cmd_z_command.v_listing_file))
- return;
-
- /*
- ** free fcb
- */
-
- _free_memory((char*)lst_az_fcb);
- lst_az_fcb = NULL;
-}
-
-\f
-
-
-\f
-
-
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** routine to create the listing file.
-**
-** FORMAL PARAMETERS:
-**
-** az_fcb file control block for the file
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** src_k_open_normal
-** src_k_open_error
-**
-** SIDE EFFECTS:
-**
-** file is created
-**
-**--
-**/
-
-status create_listing_file( az_fcb )
-
-uil_fcb_type *az_fcb;
-
-{
- /* place the file name in the expanded_name buffer */
-
- strcpy(az_fcb->expanded_name, Uil_cmd_z_command.ac_listing_file);
-
- /* open the file */
-
- az_fcb->az_file_ptr = fopen(Uil_cmd_z_command.ac_listing_file, "w");
-
- if (az_fcb->az_file_ptr == NULL)
- return src_k_open_error;
-
- /* assume 66 lines on a page */
-
- lst_l_usable_lines = 66 - 9;
-
- return src_k_open_normal;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** function to write a line to the listing file.
-**
-** FORMAL PARAMETERS:
-**
-** ac_line text of the line to output
-**
-** IMPLICIT INPUTS:
-**
-** lst_l_lines_left
-** lst_l_usable_lines
-** lst_az_fcb
-** lst_c_title1
-** lst_c_title1
-**
-** IMPLICIT OUTPUTS:
-**
-** lst_l_lines_left
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** line output to file
-**
-**--
-**/
-
-
-void lst_output_line( ac_line, v_new_page )
-
-char *ac_line;
-boolean v_new_page;
-
-{
- status error_status;
-
- if (!lst_v_listing_open)
- return;
-
- /*
- ** Update the current file and call the Status callback routine to report
- ** our progress.
- */
- Uil_current_file = lst_az_fcb->expanded_name;
- if (Uil_cmd_z_command.status_cb != (Uil_continue_type(*)())NULL)
- diag_report_status();
-
-
- if ((lst_l_lines_left <= 0) || v_new_page)
- {
- lst_l_page_no ++;
- lst_l_lines_left = lst_l_usable_lines;
-
- fprintf(lst_az_fcb->az_file_ptr,
- "\f\n%s%d\n%s\n\n",
- lst_c_title1, lst_l_page_no, Uil_lst_c_title2);
- }
-
- error_status = fprintf(lst_az_fcb->az_file_ptr, "%s\n", ac_line);
-
- if (error_status == EOF)
- {
- lst_v_listing_open = FALSE;
- diag_issue_diagnostic( d_listing_write,
- diag_k_no_source, diag_k_no_column,
- lst_az_fcb->expanded_name );
- }
-
- lst_l_lines_left --;
-
- return;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** function to return ASCII date and time
-**
-** FORMAL PARAMETERS:
-**
-** void
-**
-** IMPLICIT INPUTS:
-**
-** void
-**
-** IMPLICIT OUTPUTS:
-**
-** void
-**
-** FUNCTION VALUE:
-**
-** pointer to a null terminated string
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-char *current_time(_Xctimeparams *ctime_buf)
-{
- time_t time_location;
- char *ascii_time;
-
- time_location = time( 0 );
-
- ascii_time = _XCtime( &time_location, *ctime_buf );
-
- ascii_time[24] = 0;
-
- return ascii_time;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function outputs the UIL listing file
-**
-** FORMAL PARAMETERS:
-**
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-**
-** SIDE EFFECTS:
-**
-**
-**--
-**/
-
-void lst_output_listing()
-
-{
- src_source_record_type *az_src_rec;
- char src_buffer[ src_k_max_source_line_length+12 ];
- char *src_ptr;
- int i;
-
- /*
- ** Check that there is a listing file requested and that
- ** it is not already in error.
- */
-
- if (!(lst_v_listing_open &&
- Uil_cmd_z_command.v_listing_file)
- )
- return;
-
- /*
- ** Walk the list of source records.
- */
-
- for (az_src_rec = src_az_first_source_record;
- az_src_rec != NULL;
- az_src_rec = az_src_rec->az_next_source_record)
- {
-
- /*
- ** place the line and file number in the output buffer
- */
-
- sprintf(src_buffer, "%5d (%d)\t",
- az_src_rec->w_line_number,
- az_src_rec->b_file_number);
-
- src_ptr = &(src_buffer[ strlen( src_buffer ) ]);
-
- src_retrieve_source( az_src_rec, src_ptr );
-
- /*
- ** filter standard unprintable characters if necessary
- */
-
- if ( az_src_rec->b_flags & src_m_unprintable_chars)
- lex_filter_unprintable_chars( (unsigned char*)src_ptr, strlen( src_ptr ), 0 );
-
- /*
- ** replace leading formfeed with a blank
- */
-
- if ( az_src_rec->b_flags & src_m_form_feed)
- *src_ptr = ' ';
-
- lst_output_line( src_buffer,
- (az_src_rec->b_flags & src_m_form_feed) != 0 );
-
- /*
- ** if the line has messages, get them displayed
- */
-
- if (az_src_rec->az_message_list != NULL)
- {
- lst_output_message_ptr_line( az_src_rec, src_ptr );
- lst_output_messages( az_src_rec->az_message_list );
- }
-
- /*
- ** if the line has machine code, get it displayed if requested
- */
-
- if ( (Uil_cmd_z_command.v_show_machine_code) &&
- (az_src_rec->w_machine_code_cnt > 0) )
- {
- lst_output_machine_code( az_src_rec );
- }
-
- }
-
- /*
- ** output the orphan messages
- */
-
- if (src_az_orphan_messages != NULL)
- lst_output_messages( src_az_orphan_messages );
-
- /*
- ** output the file summary
- */
-
- lst_output_line( " ", FALSE );
-
- for (i = 0; i <= src_l_last_source_file_number; i++) {
-
- uil_fcb_type *az_fcb; /* file control block ptr */
- char buffer [132];
-
- az_fcb = src_az_source_file_table [i];
- sprintf (buffer,
- " File (%d) %s",
- i, az_fcb->expanded_name );
- lst_output_line( buffer, FALSE );
- }
-
- lst_output_line( " ", FALSE );
-
- return;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function outputs a list of messages to the UIL listing file
-**
-** FORMAL PARAMETERS:
-**
-** az_message_item ptr to start of the message list
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** messages are written to the listing file
-**
-**--
-**/
-
-void lst_output_messages( az_message_item )
-
-src_message_item_type *az_message_item;
-
-{
- src_message_item_type *az_msg;
- char buffer[132];
- int msg_no;
- int last_pos;
- int current_pos;
-
- last_pos = -1;
- msg_no = 9;
-
- for (az_msg = az_message_item;
- az_msg != NULL;
- az_msg = az_msg->az_next_message)
- {
- current_pos = az_msg->b_source_pos;
-
- if (last_pos < current_pos)
- {
- last_pos = current_pos;
- if (last_pos == diag_k_no_column)
- msg_no = 0;
- else
- msg_no = (msg_no % 9) + 1;
- }
-
-
- sprintf(buffer, "%s (%d) %s",
- diag_get_message_abbrev( az_msg->l_message_number ),
- msg_no,
- az_msg->c_text);
-
- lst_output_line( buffer, FALSE );
- }
-
- lst_output_line( " ", FALSE );
-
- return;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function outputs a list of machine code items to the
-** UIL listing file
-**
-** FORMAL PARAMETERS:
-**
-** az_src_rec ptr to a source record
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** machine code is written to the listing file
-**
-**--
-**/
-
-void lst_output_machine_code ( az_src_rec )
-
-src_source_record_type *az_src_rec;
-
-{
-
- static src_machine_code_type * * mc_array = NULL;
- static unsigned short mc_cnt = 0;
-
- src_machine_code_type *az_code;
- int code_cnt, mc_i;
-
-/* Go through the machine code list, and save the entries in
- the array; traverse them in reverse order. Reuse the vector
- if it is large enough. */
-
-
-
- code_cnt = az_src_rec->w_machine_code_cnt;
-
- if ((int)mc_cnt < code_cnt) {
- if (mc_array != NULL) {
- _free_memory ((char*)mc_array);
- }
- mc_array =
- (src_machine_code_type * *)_get_memory (sizeof (char *) * code_cnt);
- mc_cnt = code_cnt;
- }
-
- for (az_code = az_src_rec->az_machine_code_list, mc_i = 0;
- az_code != NULL;
- az_code = az_code->az_next_machine_code, mc_i++) {
- mc_array [mc_i] = az_code;
- }
-
- for (mc_i = code_cnt - 1; mc_i >= 0; mc_i--)
- {
-
-#define BIT_64_LONG ((sizeof(long)*8)==64)
-
-#define OFFSET_COL (BIT_64_LONG ? 75 : 43) /*should be 75 on 64 bit mach, 43 on 32*/
-#define TEXT_COL (BIT_64_LONG ? 82 : 50) /*82 on 64 bit mach, 50 on 32*/
-#define BUF_LEN (BIT_64_LONG ? 164 : 132) /*164 on 64 bit mach. 132 on 32 bit mach.*/
-#define HEX_PER_WORD 4
-#define HEX_PER_LONG (BIT_64_LONG ? 16 : 8) /*should be 16 on 64 bit mach., 8 on 32 bit mach*/
-
-#define LONG_PER_LINE 4
-#define ASCII_PER_LINE (LONG_PER_LINE * sizeof (long))
-
- unsigned short long_cnt, extra_byte_cnt, text_len, code_len,
- line_cnt, extra_long_cnt, i, j, code_offset;
- unsigned char buffer[ BUF_LEN + 1 ], * text_ptr,
- hex_longword [HEX_PER_LONG + 1], line_written;
- unsigned long * code_ptr;
-
- unsigned long temp_long;
- static unsigned short start_hex_long [4];
- /*if 64-bit environment, it should have vals { 55, 38, 21, 4 };
- if 32 bit environment, { 31, 22, 13, 4 };
- */
- start_hex_long[0]=(BIT_64_LONG ? 55 : 31);
- start_hex_long[1]=(BIT_64_LONG ? 38 : 22);
- start_hex_long[2]=(BIT_64_LONG ? 21 : 13);
- start_hex_long[3]=4;
-
-
- az_code = mc_array [mc_i];
-
- code_ptr = (unsigned long *)az_code -> data.c_data;
- code_len = az_code -> w_code_len;
- code_offset = az_code -> w_offset;
- text_ptr = (unsigned char *)(& az_code -> data.c_data [code_len]);
- text_len = strlen ((char *)text_ptr);
- if (text_len > (unsigned short) (BUF_LEN - TEXT_COL + 1))
- text_len = BUF_LEN - TEXT_COL + 1;
-
- long_cnt = code_len / sizeof (char *);
- line_cnt = long_cnt / LONG_PER_LINE;
- extra_long_cnt = long_cnt % LONG_PER_LINE;
- extra_byte_cnt = code_len % sizeof (char *);
-
- _fill (buffer, ' ', sizeof buffer - 1);
-
-
- sprintf ((char *)hex_longword, "%04X", code_offset);
- _move (& buffer [OFFSET_COL - 1], hex_longword, HEX_PER_WORD);
-
- _move (& buffer [TEXT_COL - 1], text_ptr, text_len);
- buffer [TEXT_COL + text_len] = '\0';
-
- line_written = FALSE;
-
-/*
-** Write out entire lines. Clear the text after the first line.
-** Filter all non-printable characters.
-*/
-
- for (i = 0; i < line_cnt; i++) {
-
- if (text_len == 0) {
- _move (& buffer [TEXT_COL - 1], code_ptr, ASCII_PER_LINE);
- lex_filter_unprintable_chars ((unsigned char*)
- & buffer [TEXT_COL - 1], ASCII_PER_LINE,
- lex_m_filter_tab );
- buffer [TEXT_COL - 1 + ASCII_PER_LINE] = '\0';
- }
-
- for (j = 0; j < LONG_PER_LINE; j++, code_ptr++) {
-
-
- if (BIT_64_LONG){
-
- sprintf ((char *)hex_longword, "%lX", (* code_ptr));
- }
- else{
- sprintf ((char *)hex_longword, "%08X", (* code_ptr));
- }
-
- _move (& buffer [start_hex_long [j]],
- hex_longword, HEX_PER_LONG);
-
- }
-
-
- lst_output_line((char*) buffer, FALSE );
- line_written = TRUE;
-
- code_offset += LONG_PER_LINE * sizeof (long);
- sprintf ((char *)hex_longword, "%04X", code_offset);
- _move (& buffer [OFFSET_COL - 1], hex_longword, HEX_PER_WORD);
-
- if (i == 0 && text_len > 0) {
- _fill (& buffer [TEXT_COL - 1], ' ', text_len);
- }
- }
-
-/* Write out a partial line. */
-
- if (extra_long_cnt > 0 || extra_byte_cnt > 0) {
-
- if (text_len == 0) {
- int ascii_cnt;
-
- ascii_cnt = (extra_long_cnt * sizeof (long)) + extra_byte_cnt;
- _move (& buffer [TEXT_COL - 1], code_ptr, ascii_cnt);
- lex_filter_unprintable_chars ((unsigned char*)
- & buffer [TEXT_COL - 1], ascii_cnt,
- lex_m_filter_tab );
- buffer [TEXT_COL - 1 + ascii_cnt] = '\0';
- }
-
-/* Clear code from previous lines, keeping the offset and text if
- it is there. */
-
- _fill (buffer, ' ', OFFSET_COL - 1);
-
- if (extra_long_cnt > 0) {
-
-/* Format the code longwords. */
-
- for (i = 0; i < extra_long_cnt; i++, code_ptr++) {
- unsigned long temp_long;
- if (BIT_64_LONG){
-/* _move( (char*) &temp_long, (char*) code_ptr, sizeof(temp_long));*/
- sprintf ((char *)hex_longword, "%lX", (* code_ptr));
- }
- else{
- sprintf ((char *)hex_longword, "%08X", (*code_ptr));
- }
-
- _move (& buffer [start_hex_long [i]],
- hex_longword, HEX_PER_LONG);
- }
- }
-
-/* Format the extra code bytes. */
-
- if (extra_byte_cnt > 0) {
- int l;
- unsigned char extra_bytes [sizeof (long)];
-
- _move (extra_bytes, code_ptr, extra_byte_cnt);
- _fill (hex_longword, ' ', HEX_PER_LONG);
- for (l = extra_byte_cnt - 1; l >= 0; l--) {
- if (BIT_64_LONG)
- sprintf ((char *)
- & hex_longword [HEX_PER_LONG - (2 * (l + 1))],
- "%02X", extra_bytes [l]);
- else
- sprintf ((char *)
- & hex_longword [HEX_PER_LONG - (2 * (l + 1))],
- "%02X", extra_bytes [extra_byte_cnt-l-1]);
-
- }
- _move (& buffer [start_hex_long [extra_long_cnt]],
- hex_longword, HEX_PER_LONG);
- }
-
-/* Output the partial line. */
-
- lst_output_line( (char*)buffer, FALSE );
-
- line_written = TRUE;
-
- }
-
- if (! line_written) {
- if (text_len > 0) {
- lst_output_line((char*) buffer, FALSE );
- } else {
- lst_output_line( " ", FALSE );
- }
- }
-
- }
-
-
-
- return;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function outputs a pointer line showing the position of
-** diagnostics to the UIL listing file.
-**
-** FORMAL PARAMETERS:
-**
-** az_src_rec ptr to a source record
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** message ptr line is written to the listing file
-**
-**--
-**/
-
-void lst_output_message_ptr_line( az_src_rec, src_buffer )
-
-src_source_record_type *az_src_rec;
-char *src_buffer;
-
-{
- src_message_item_type *az_msg;
- char buffer[ src_k_max_source_line_length + 3 ];
- char *ptr_buffer;
- int msg_no;
- int pos;
- int msg_pos;
- char c_char;
- boolean v_output_line;
-
- if (_src_null_access_key( az_src_rec->z_access_key) )
- return;
-
- msg_no = 9;
-
- buffer[ 0 ] = '\t';
- buffer[ 1 ] = '\t';
- ptr_buffer = &buffer[ 2 ];
-
- az_msg = az_src_rec->az_message_list;
- if (az_msg == NULL)
- return;
- msg_pos = az_msg->b_source_pos;
- if (msg_pos == diag_k_no_column)
- return;
-
- v_output_line = FALSE;
-
- for (pos = 0; c_char = src_buffer[ pos ], c_char != 0; )
- {
- if (pos < msg_pos)
- {
- if (c_char == '\t')
- ptr_buffer[ pos++ ] = '\t';
- else
- ptr_buffer[ pos++ ] = ' ';
-
- continue;
- }
-
- msg_no = (msg_no % 9) + 1;
- ptr_buffer[ pos++ ] = msg_no + '0';
- v_output_line = TRUE;
-
-next_message:
- az_msg = az_msg->az_next_message;
- if (az_msg == NULL)
- goto finished_scan;
- msg_pos = az_msg->b_source_pos;
- if ((pos-1) == msg_pos) /* pos already advanced */
- goto next_message;
- if (msg_pos == diag_k_no_column)
- goto finished_scan;
-
- }
-
-finished_scan:
- ptr_buffer[ pos ] = 0;
-
- if (v_output_line)
- lst_output_line( buffer, FALSE );
-
- return;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** lst_debug_output sends debugging info to the listing file if
-** there is one; if not the output goes to standard output.
-**
-** FORMAL PARAMETERS:
-**
-** standard Xprintf argument list
-**
-** IMPLICIT INPUTS:
-**
-** lst_v_listing_open
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** print lines either in the listing file or to standard output
-**
-**--
-**/
-
-static int cur_pos=0;
-static char buffer[132];
-
-void lst_debug_output
-
- (char *format, ...)
-{
- va_list ap; /* ptr to variable length parameter */
-
- /*
- ** establish the start of the parameter list
- */
-
- va_start(ap,format);
-
- /*
- ** check if the listing file is open for output
- */
-
- if (lst_v_listing_open)
- {
- int count;
- char *ptr;
-
- vsprintf( &(buffer[cur_pos]), format, ap );
-
- for ( ptr=buffer; ptr[0] != '\0'; ptr += (count+1) )
- {
- _assert( ptr <= &(buffer[132]), "Overflowed debug listing buffer" );
- count = strcspn( ptr, "\n" );
- if (count == strlen( ptr ))
- {
- cur_pos = ptr - buffer + count;
- return;
- }
- else
- {
- ptr[ count ] = '\0';
- }
- lst_output_line( ptr, FALSE );
- }
- cur_pos = 0;
-
- }
- else
- vprintf( format, ap );
-
- va_end(ap);
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilLstMac.c /main/15 1997/03/12 15:21:48 dbl $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contain the routines for creating the machine listing.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-
-
-#include <Mrm/MrmAppl.h>
-#include <X11/Xmd.h> /* For 64-bit architecture dependencies */
-
-
-#ifdef DXM_V11
-#include <DXm/DXmHelpB.h>
-#endif
-
-#include "UilDefI.h"
-
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-/* Holds offset info for machine code listing. */
-
-typedef struct _off_info {
- unsigned short int w_off_type;
- unsigned short int w_off_offset;
- } off_info_type;
-
-#define k_name_off 0
-#define k_class_off 1
-#define k_arglist_off 2
-#define k_children_off 3
-#define k_comment_off 4
-#define k_creation_off 5
-#define k_callback_off 6
-#define k_resource_off 7
-#define k_float_off 8
-#define k_unknown_off 9
-#define k_resource_id_off 10
-#define k_child_off 11
-#define k_text_entry_off 12
-#define k_null_text_entry_off 13
-#define k_single_float_off 14 /* single float data type RAP */
-
-#define k_off_stack_size 300
-
-static off_info_type off_info_stack [k_off_stack_size];
-
-static int off_info_cnt = 0;
-
-
-
-
-#define off_stack_empty (off_info_cnt == 0)
-
-#define _Offset(type,base,field) \
- ((unsigned int)(base + XtOffsetOf(type, field)))
-
-#if defined(__STDC__)
-#define _OffsetArray(type,base,field) \
- ((unsigned int)(base + XtOffsetOf(type, field)))
-#else
-#define _OffsetArray(type,base,field) \
- ((unsigned int)(base + XtOffsetOf(type, field[0])))
-#endif
-#define _Pointer(base,offset) ((char *)(base)+(offset))
-
-#define ASNHEADERLEN 3
-#define CSLONGBIT (unsigned char)(0x80)
-#define ASNstrlen(a) (ASNHEADERLEN+ \
- (((unsigned char)(a)[ASNHEADERLEN]&CSLONGBIT)? \
- (((unsigned short)((a)[ASNHEADERLEN+1])<<8) | \
- (unsigned short)((a)[ASNHEADERLEN+2]))+3 : \
- ((unsigned short)((a)[ASNHEADERLEN]))+1))
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function saves the machine code listing information for widgets.
-**
-** FORMAL PARAMETERS:
-**
-** widget_entry Symbol node for this widget
-** az_context context containing the URM output information.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** the machine code is saved in the source record structure for
-** the widget.
-**
-**--
-**/
-
-void save_widget_machine_code ( widget_entry, az_context )
-
-sym_widget_entry_type * widget_entry;
-URMResourceContext * az_context;
-
-{
-
- RGMWidgetRecordPtr w_rec;
- char buffer [132];
- unsigned short int w_rec_size;
- src_source_record_type * az_src_rec;
-
-#define _WRPointer(w_rec,offset) ((char *)(w_rec)+(offset))
-
-#define _WROffset(field) (_Offset(RGMWidgetRecord,0,field))
-
- az_src_rec = widget_entry->header.az_src_rec;
-
- if (widget_entry->resource_id != 0 ) {
- sprintf (buffer, "Resource ID: %08X", widget_entry->resource_id);
- src_append_machine_code (
- az_src_rec,
- 0,
- 0, 0,
- buffer );
- } else if (widget_entry->obj_header.az_name != NULL) {
- sprintf (buffer, "Resource index: %s",
- widget_entry->obj_header.az_name->c_text);
- src_append_machine_code (
- az_src_rec,
- 0,
- 0, 0,
- buffer );
- }
-
- w_rec = (RGMWidgetRecordPtr) UrmRCBuffer (az_context);
-
- src_append_machine_code (
- az_src_rec,
- _WROffset (validation),
- sizeof (w_rec->validation), (char*)& w_rec->validation,
- "widget record" );
-
- sprintf (buffer, "size: %d", w_rec->size);
-
- src_append_machine_code (
- az_src_rec,
- _WROffset (size),
- sizeof (w_rec->size), (char*)& w_rec->size,
- buffer );
-
- w_rec_size = w_rec->size;
-
- sprintf (buffer, "access: %s",
- access_from_code (w_rec->access) );
-
- src_append_machine_code (
- az_src_rec,
- _WROffset (access),
- sizeof (w_rec->access), (char*)& w_rec->access,
- buffer );
-
- sprintf (buffer, "locked: ");
-
- if (w_rec->lock) {
- strcat (buffer, "true");
- } else {
- strcat (buffer, "false");
- }
-
- src_append_machine_code (
- az_src_rec,
- _WROffset (lock),
- sizeof (w_rec->lock), (char*)& w_rec->lock,
- buffer );
-
- sprintf (buffer, "type: ");
-
- strcat (buffer, class_name_from_code (w_rec->type));
-
- src_append_machine_code (
- az_src_rec,
- _WROffset (type),
- sizeof (w_rec->type), (char*)& w_rec->type,
- buffer );
-
- if (w_rec->name_offs == (MrmOffset) 0) {
- sprintf (buffer, "no name specified");
- } else {
- sprintf (buffer, "name: offset %X (hex)",
- w_rec->name_offs);
- off_put (k_name_off, w_rec->name_offs);
- }
-
- src_append_machine_code (
- az_src_rec,
- _WROffset (name_offs),
- sizeof (w_rec->name_offs),
- (char*)& w_rec->name_offs,
- buffer );
-
- if (w_rec->class_offs == (MrmOffset) 0) {
- sprintf (buffer, "class: builtin");
- } else {
- sprintf (buffer, "class: offset %X (hex)",
- w_rec->class_offs);
- off_put (k_class_off, w_rec->class_offs);
- }
-
- src_append_machine_code (
- az_src_rec,
- _WROffset (class_offs),
- sizeof (w_rec->class_offs),
- (char*)& w_rec->class_offs,
- buffer );
-
- if (w_rec->arglist_offs == (MrmOffset) 0) {
- sprintf (buffer, "no argument list");
- } else {
- sprintf (buffer, "argument list offset: %X (hex)", w_rec->arglist_offs);
- off_put (k_arglist_off, w_rec->arglist_offs);
- }
-
- src_append_machine_code (
- az_src_rec,
- _WROffset (arglist_offs),
- sizeof (w_rec->arglist_offs),
- (char*)& w_rec->arglist_offs,
- buffer );
-
- if (w_rec->children_offs == (MrmOffset) 0) {
- sprintf (buffer, "no children");
- } else {
- sprintf (buffer, "children list offset: %X (hex)",
- w_rec->children_offs);
- off_put (k_children_off, w_rec->children_offs);
- }
-
- src_append_machine_code (
- az_src_rec,
- _WROffset (children_offs),
- sizeof (w_rec->children_offs),
- (char*)& w_rec->children_offs,
- buffer );
-
- if (w_rec->comment_offs == (MrmOffset) 0) {
- sprintf (buffer, "no comment specified");
- } else {
- sprintf (buffer, "comment: offset %X (hex)",
- w_rec->comment_offs);
- off_put (k_comment_off, w_rec->comment_offs);
- }
-
- src_append_machine_code (
- az_src_rec,
- _WROffset (comment_offs),
- sizeof (w_rec->comment_offs),
- (char*)& w_rec->comment_offs,
- buffer );
-
- if (w_rec->creation_offs == (MrmOffset) 0) {
- sprintf (buffer, "no creation callback");
- } else {
- sprintf (buffer, "creation callback offset: %X (hex)",
- w_rec->creation_offs);
- off_put (k_creation_off, w_rec->creation_offs);
- }
-
- src_append_machine_code (
- az_src_rec,
- _WROffset (creation_offs),
- sizeof (w_rec->creation_offs),
- (char*)& w_rec->creation_offs,
- buffer );
-
- unload_stack(( char *) w_rec, w_rec_size, az_src_rec );
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function unloads entries placed on a stack and outputs them
-** into the listing. The routine is used by both widgets and gadgets
-** to output their argument, control, and callback lists.
-**
-** FORMAL PARAMETERS:
-**
-** rec base of the record being annotated
-** rec_sizr size of the record being annotated
-** az_src_rec address of the source for record being annotated
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-**
-** SIDE EFFECTS:
-**
-**
-**--
-**/
-void unload_stack( rec, rec_size, az_src_rec )
-
-char *rec;
-int rec_size;
-src_source_record_type *az_src_rec;
-
-{
-
- char buffer [132], * ptr;
- int child_index;
-
- while ( ! off_stack_empty ) {
-
- unsigned short off_type, off_offset;
-
- off_get (& off_type, & off_offset);
-
- switch (off_type) {
-
- case k_name_off :
- case k_class_off :
- case k_comment_off : {
-
- ptr = (char *) _Pointer(rec, off_offset);
- src_append_machine_code (
- az_src_rec, off_offset,
- strlen (ptr) + 1, ptr, NULL );
- break;
- }
-
- case k_unknown_off : {
-
- unsigned short int len;
-
-/* Write out everything up to the next offset or the end of the
- record. */
-
- if ( ! off_stack_empty ) {
- unsigned short int next_type, next_offset;
-
- off_get (& next_type, & next_offset);
- off_put (next_type, next_offset);
- len = next_offset - off_offset;
- } else {
- len = rec_size - off_offset;
- }
-
- ptr = (char *) _Pointer(rec, off_offset);
- src_append_machine_code (
- az_src_rec, off_offset,
- len, ptr, NULL );
- break;
- }
-
- case k_arglist_off : {
-
- RGMArgListDescPtr argdesc;
- RGMArgumentPtr arg_ptr;
- int j;
-
- argdesc = (RGMArgListDescPtr) _Pointer(rec, off_offset);
-
- sprintf (buffer, "argument count: %d", argdesc->count);
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMArgListDesc, off_offset, count),
- sizeof (argdesc->count),
- (char*)& argdesc->count,
- buffer );
-
- sprintf (buffer, "related argument count: %d", argdesc->extra);
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMArgListDesc, off_offset, extra),
- sizeof (argdesc->extra),
- (char*)& argdesc->extra,
- buffer );
-
- off_offset = _OffsetArray (RGMArgListDesc, off_offset, args);
-
- for (j = 0, arg_ptr = argdesc->args;
- j < argdesc->count;
- j++, arg_ptr++, off_offset += sizeof (RGMArgument)) {
-
- if (arg_ptr->tag_code != UilMrmUnknownCode )
- {
- sprintf (buffer,
- "(%d) arg type: %s",
- j,
- resource_name_from_code(arg_ptr->tag_code));
- }
- else
- {
- ptr = (char *)
- _Pointer(rec,arg_ptr->stg_or_relcode.tag_offs);
- sprintf (buffer,
- "(%d) arg type: %s (user defined)",
- j,
- ptr);
- }
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMArgument, off_offset, tag_code),
- sizeof (arg_ptr->tag_code),
- (char*)& arg_ptr->tag_code,
- buffer );
-
- if (arg_ptr->stg_or_relcode.tag_offs == (MrmOffset) 0) {
- sprintf (buffer, "(%d) no tag offset", j);
- } else {
- sprintf (buffer, "(%d) tag offset: %X (hex)",
- j, arg_ptr->stg_or_relcode.tag_offs);
- off_put (k_name_off, arg_ptr->stg_or_relcode.tag_offs);
- }
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMArgument, off_offset, stg_or_relcode.tag_offs),
- sizeof (arg_ptr->stg_or_relcode.tag_offs),
- (char*)& arg_ptr->stg_or_relcode.tag_offs,
- buffer );
-
- sprintf (buffer, "(%d) type: %s",
- j, type_from_code (arg_ptr->arg_val.rep_type) );
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMArgument, off_offset,
- arg_val.rep_type),
- sizeof (arg_ptr->arg_val.rep_type),
- (char*)& arg_ptr->arg_val.rep_type,
- buffer );
-
- sprintf (buffer, "(%d) ", j);
-
- format_arg_value (& arg_ptr->arg_val,
- & buffer [strlen (buffer)]);
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMArgument, off_offset,
- arg_val.datum),
- sizeof (arg_ptr->arg_val.datum),
- (char*)& arg_ptr->arg_val.datum,
- buffer );
-
- }
-
- break;
- }
-
- case k_float_off : {
-
- double * dptr;
-
- dptr = (double *) _Pointer (rec, off_offset);
- sprintf (buffer, "floating point value: %g", (* dptr));
- src_append_machine_code (
- az_src_rec,
- off_offset,
- sizeof (double), (char*)dptr, buffer );
- break;
- }
-
-/* single float data type RAP */
- case k_single_float_off :
- {
- float *fptr;
-
- fptr = (float *) _Pointer(rec, off_offset);
- sprintf(buffer, "Single float value: %g", (* fptr));
- src_append_machine_code (
- az_src_rec,
- off_offset,
- sizeof (float), (char*)fptr, buffer);
- break;
- }
-
-
- case k_creation_off :
- case k_callback_off : {
-
- RGMCallbackDescPtr cb_desc_ptr;
- RGMCallbackItemPtr cb_item_ptr;
- int j;
-
- cb_desc_ptr =
- (RGMCallbackDescPtr) _Pointer (rec, off_offset);
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMCallbackDesc, off_offset, validation),
- sizeof (cb_desc_ptr->validation),
- (char*)& cb_desc_ptr->validation,
- "callback descriptor" );
-
- sprintf (buffer, "callback count: %d", cb_desc_ptr->count);
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMCallbackDesc, off_offset, count),
- sizeof (cb_desc_ptr->count),
- (char*)& cb_desc_ptr->count,
- buffer );
-
- off_offset =
- _OffsetArray (RGMCallbackDesc, off_offset, item);
-
- for (j = 0, cb_item_ptr = cb_desc_ptr->item;
- j < cb_desc_ptr->count;
- j++, cb_item_ptr++,
- off_offset += sizeof (RGMCallbackItem)) {
-
- sprintf (buffer,
- "(%d) routine name offset: %X (hex)",
- j, cb_item_ptr->cb_item.routine);
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMCallbackItem, off_offset,
- cb_item.routine),
-#ifndef WORD64
- sizeof (cb_item_ptr->cb_item.routine),
- (char*)& cb_item_ptr->cb_item.routine,
-#else /* 64-bit architecture */
- 4,
- (char*)& cb_item_ptr->cb_item,
-#endif /* WORD64 */
- buffer );
-
- off_put (k_name_off, cb_item_ptr->cb_item.routine);
-
- sprintf (buffer, "(%d) routine tag type: %s",
- j, type_from_code (
- cb_item_ptr->cb_item.rep_type) );
-
- src_append_machine_code
- (az_src_rec,
- _Offset (RGMCallbackItem, off_offset,
- cb_item.rep_type),
-#ifndef WORD64
- sizeof (cb_item_ptr->cb_item.rep_type),
- (char*)& cb_item_ptr->cb_item.rep_type,
-#else /* 64-bit architecture */
- 4,
- (char*)& cb_item_ptr->cb_item + 4,
-#endif /* WORD64 */
- buffer );
-
- sprintf (buffer, "(%d) value: ", j);
- src_append_machine_code
- (az_src_rec,
- _Offset (RGMCallbackItem, off_offset,
- cb_item.datum),
- sizeof (cb_item_ptr->cb_item.datum),
- (char*)& cb_item_ptr->cb_item.datum,
- buffer );
-
- } /* for */
-
- break;
- }
-
- case k_resource_off : {
-
- RGMResourceDescPtr r_desc_ptr;
-
- r_desc_ptr =
- (RGMResourceDescPtr) _Pointer (rec, off_offset);
-
- sprintf (buffer, "resource descriptor, size: %d",
- r_desc_ptr->size);
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMResourceDesc, off_offset, size),
- sizeof (r_desc_ptr->size),
- (char*)& r_desc_ptr->size,
- buffer );
-
- sprintf (buffer, "access: %s",
- access_from_code (r_desc_ptr->access) );
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMResourceDesc, off_offset, access),
- sizeof (r_desc_ptr->access),
- (char*)& r_desc_ptr->access,
- buffer );
-
- switch (r_desc_ptr->type) {
- case URMrIndex:
- sprintf (buffer, "index, offset: %X (hex)",
- _Offset (RGMResourceDesc, off_offset, key) );
-
- off_put (k_name_off,
- _Offset (RGMResourceDesc, off_offset, key) );
- break;
-
- case URMrRID:
-
- sprintf (buffer, "resource ID, offset: %X (hex)",
- _Offset (RGMResourceDesc, off_offset, key) );
-
- off_put (k_resource_id_off,
- _Offset (RGMResourceDesc, off_offset, key) );
- break;
-
- default:
- sprintf (buffer, "unknown resource type");
- break;
- }
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMResourceDesc, off_offset, type),
- sizeof (r_desc_ptr->type),
- (char*)& r_desc_ptr->type,
- buffer );
-
- sprintf (buffer, "resource group: %s",
- group_from_code (r_desc_ptr->res_group) );
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMResourceDesc, off_offset, res_group),
- sizeof (r_desc_ptr->res_group),
- (char*)& r_desc_ptr->res_group,
- buffer );
-
- sprintf (buffer, "resource type: %s",
- (r_desc_ptr->res_group == URMgLiteral) ?
- type_from_code (r_desc_ptr->cvt_type) :
- class_name_from_code (r_desc_ptr->cvt_type) );
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMResourceDesc, off_offset, cvt_type),
- sizeof (r_desc_ptr->cvt_type),
- (char*)& r_desc_ptr->cvt_type,
- buffer );
-
- break;
- }
-
- case k_resource_id_off : {
-
- sprintf (buffer, "resource id");
-
- src_append_machine_code (
- az_src_rec,
- off_offset,
- sizeof (MrmResource_id),
- (char *) _Pointer (rec, off_offset),
- buffer );
-
- break;
- }
-
- case k_children_off : {
-
- RGMChildrenDescPtr c_desc_ptr;
- int j;
-
- c_desc_ptr = (RGMChildrenDescPtr) _Pointer(rec, off_offset);
-
- sprintf (buffer, "Children count: %d",
- c_desc_ptr->count);
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMChildrenDesc, off_offset, count),
- sizeof (c_desc_ptr->count),
- (char*)& c_desc_ptr->count,
- buffer );
-
- off_offset =
- _OffsetArray (RGMChildrenDesc, off_offset, child);
-
- for (j = 0; j < c_desc_ptr->count;
- j++, off_offset += sizeof (RGMChildDesc)) {
-
- off_put (k_child_off, off_offset);
- } /* for */
-
- child_index = 0;
-
- break;
- }
-
- case k_child_off : {
-
- RGMChildDescPtr c_ptr;
- int j;
-
- c_ptr = (RGMChildDescPtr) _Pointer(rec, off_offset);
-
- j = child_index;
-
- child_index++;
-
- if (c_ptr->manage) {
- sprintf (buffer, "(%d) managed", j);
- } else {
- sprintf (buffer, "(%d) unmanaged", j);
- }
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMChildDesc, off_offset, manage),
- sizeof (c_ptr->manage),
- (char*)& c_ptr->manage,
- buffer );
-
- sprintf (buffer, "(%d) access: %s", j,
- access_from_code (c_ptr->access) );
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMChildDesc, off_offset, access),
- sizeof (c_ptr->access),
- (char*)& c_ptr->access,
- buffer );
-
- switch (c_ptr->type) {
- case URMrIndex:
- sprintf (buffer, "(%d) index, offset: %X (hex)",
- j, c_ptr->key.index_offs);
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMChildDesc, off_offset, type),
- sizeof (c_ptr->type) + sizeof (c_ptr->key),
- (char*)& c_ptr->type,
- buffer );
-
- off_put (k_name_off, c_ptr->key.index_offs);
-
- break;
-
- case URMrRID:
- sprintf (buffer,
- "(%d) resource ID, offset: %X (hex)",
- j, _Offset (RGMChildDesc, off_offset, key) );
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMChildDesc, off_offset, type),
- sizeof (c_ptr->type),
- (char*)& c_ptr->type,
- buffer );
-
- off_put (k_resource_id_off,
- _Offset (RGMChildDesc, off_offset, key) );
- break;
-
- default:
-
- sprintf (buffer, "(%d) unknown class", j);
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMChildDesc, off_offset, type),
- sizeof (c_ptr->type),
- (char*)& c_ptr->type,
- buffer );
-
- break;
- }
-
- break;
- }
-
- default : {
-
- break;
- }
- } /* switch */
- } /* for */
-
- src_append_machine_code ( az_src_rec, 0, 0, 0, 0 );
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function saves the machine code listing information for values.
-**
-** FORMAL PARAMETERS:
-**
-** value_entry Symbol node for this value
-** az_context context containing the URM output information.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** the machine code is saved in the source record structure for this
-** value.
-**
-**--
-**/
-
-void save_value_machine_code ( value_entry, az_context )
-
-sym_value_entry_type * value_entry;
-URMResourceContext * az_context;
-
-{
- src_source_record_type * az_src_rec;
- char buffer [132], * rc_buffer;
- unsigned short int rc_size;
-
- az_src_rec = value_entry->header.az_src_rec;
-
- if (value_entry->resource_id != 0) {
- sprintf (buffer, "Resource ID: %08X", value_entry->resource_id);
- src_append_machine_code (
- az_src_rec,
- 0,
- 0, 0,
- buffer );
- } else if (value_entry->obj_header.az_name != NULL) {
- sprintf (buffer, "Resource index: %s",
- value_entry->obj_header.az_name->c_text);
- src_append_machine_code
- (az_src_rec,
- 0,
- 0, 0,
- buffer);
- }
-
- sprintf (buffer, "size: %d, group: %s",
- UrmRCSize (az_context),
- group_from_code (UrmRCGroup (az_context)) );
- src_append_machine_code ( az_src_rec, 0, 0, 0, buffer );
-
- sprintf (buffer, "type: %s, access: %s, locked: ",
- type_from_code (UrmRCType (az_context)),
- access_from_code (UrmRCAccess (az_context)) );
-
- if (UrmRCLock (az_context)) {
- strcat (buffer, "true");
- } else {
- strcat (buffer, "false");
- }
-
- src_append_machine_code ( az_src_rec, 0, 0, 0, buffer );
-
- rc_buffer = UrmRCBuffer (az_context);
- rc_size = UrmRCSize (az_context);
-
- /*
- ** Case on the type of literal.
- */
-
- switch (value_entry->b_type)
- {
- case sym_k_bool_value:
-
- if ( * (unsigned long *) rc_buffer )
- sprintf (buffer, "value: true");
- else
- sprintf (buffer, "value: false");
- src_append_machine_code (
- az_src_rec, 0, rc_size, rc_buffer, buffer );
- break;
-
- case sym_k_integer_value:
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
-
- sprintf (buffer, "value: %d",
- (* (unsigned long *) rc_buffer) );
- src_append_machine_code (
- az_src_rec, 0, rc_size, rc_buffer, buffer );
- break;
-
- case sym_k_integer_table_value:
- case sym_k_rgb_value: /* rgb data type RAP */
- {
- int index = 0;
- int offset = 0;
-
- for (offset = 0; offset < (int)rc_size; offset += sizeof(int), index++)
- {
- sprintf (buffer, "value[%d]: %d",
- index, ((unsigned long *) rc_buffer)[index] );
-
- src_append_machine_code
- (az_src_rec, 0, sizeof(int),
- (char*)&(((unsigned long *)rc_buffer)[index]), buffer );
- }
- break;
- }
-
- case sym_k_float_value:
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- sprintf (buffer, "value: %g",
- (* (double *) rc_buffer) );
- src_append_machine_code (
- az_src_rec, 0, rc_size, rc_buffer, buffer );
- break;
-
- case sym_k_single_float_value:
- sprintf (buffer, "value: %g",
- (* (float *) rc_buffer));
- src_append_machine_code
- (az_src_rec, 0, rc_size, rc_buffer, buffer );
- break;
-
- case sym_k_char_8_value:
- case sym_k_color_value:
- case sym_k_color_table_value:
- case sym_k_icon_value:
- case sym_k_font_value:
- case sym_k_fontset_value:
- case sym_k_font_table_value:
- case sym_k_reason_value:
- case sym_k_argument_value:
- case sym_k_identifier_value:
- case sym_k_compound_string_value:
- case sym_k_xbitmapfile_value:
- case sym_k_keysym_value:
- src_append_machine_code (
- az_src_rec,
- 0,
- rc_size, rc_buffer, 0 );
- break;
-
- case sym_k_asciz_table_value:
- case sym_k_string_table_value: {
- RGMTextVectorPtr tv_ptr;
- unsigned short off_type, off_offset, off_cnt;
- int i;
-
- off_offset = 0;
- tv_ptr = (RGMTextVectorPtr) rc_buffer;
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMTextVector, off_offset, validation),
- sizeof (tv_ptr->validation),
- (char*)& tv_ptr->validation,
- "text vector" );
-
- sprintf (buffer, "count: %d", tv_ptr->count);
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMTextVector, off_offset, count),
- sizeof (tv_ptr->count), (char*)& tv_ptr->count,
- buffer );
-
- off_offset = _OffsetArray (RGMTextVector, off_offset, item);
- for (i = 0; i < tv_ptr->count;
- i++, off_offset += sizeof (RGMTextEntry)) {
-
- off_put (k_text_entry_off, off_offset);
- }
-
- off_put (k_null_text_entry_off, off_offset);
- off_cnt = 0;
- while ( ! off_stack_empty ) {
-
- RGMTextEntryPtr te_ptr;
- off_get (& off_type, & off_offset);
- switch (off_type) {
- case k_name_off :
-
- {
- char *stringPtr = (char *) _Pointer (rc_buffer,off_offset);
- src_append_machine_code (az_src_rec, off_offset,
- ASNstrlen( stringPtr ),
- stringPtr, NULL );
- }
- break;
-
- case k_null_text_entry_off :
-
- src_append_machine_code (
- az_src_rec, off_offset,
- sizeof (RGMTextEntry),
- (char*)_Pointer (rc_buffer, off_offset),
- "end of text vector" );
-
- break;
-
- case k_text_entry_off :
-
- te_ptr = (RGMTextEntryPtr)
- _Pointer (rc_buffer, off_offset);
-
- sprintf (buffer, "(%d) type: %s, offset: %X (hex)",
- off_cnt,
- type_from_code (te_ptr->text_item.rep_type),
- te_ptr->text_item.offset );
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMTextEntry, off_offset,
- text_item),
- sizeof (te_ptr->text_item),
- (char*)& te_ptr->text_item,
- buffer );
-
- off_cnt++;
-
- off_put (k_name_off, te_ptr->text_item.offset);
-
- break;
-
- default:
-
- sprintf (buffer, "(%d) unknown text entry", i);
-
- src_append_machine_code (
- az_src_rec,
- off_offset,
- 0, 0, buffer );
-
- break;
- }
- }
-
- break;
- }
-
- case sym_k_trans_table_value:
-
- src_append_machine_code (
- az_src_rec, 0, rc_size, rc_buffer, NULL );
-
- break;
-
- default: {
-
- sprintf (buffer, "unknown value");
-
- src_append_machine_code (
- az_src_rec,
- 0,
- 0, 0, buffer );
-
- break;
- }
- }
-
- src_append_machine_code ( az_src_rec, 0, 0, 0, 0 );
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function saves the machine code listing information for modules.
-**
-** FORMAL PARAMETERS:
-**
-** az_src_rec Source record for this machine code info.
-** az_context context containing the URM output information.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** the machine code is saved in the source record structure
-**
-**--
-**/
-
-void save_module_machine_code ( az_src_rec, az_context )
-
-src_source_record_type * az_src_rec;
-URMResourceContext * az_context;
-
-{
-
- RGMModuleDescPtr m_rec;
- RGMTopmostDescPtr t_rec;
- char buffer [132];
- unsigned short off_offset;
- int i;
-
- off_offset = 0;
-
- m_rec = (RGMModuleDescPtr) UrmRCBuffer (az_context);
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMModuleDesc, off_offset, validation),
- sizeof (m_rec->validation), (char*)& m_rec->validation,
- "module record" );
-
- sprintf (buffer, "topmost count: %d", m_rec->count);
-
- src_append_machine_code (
- az_src_rec,
- _Offset (RGMModuleDesc, off_offset, count),
- sizeof (m_rec->count), (char*)& m_rec->count,
- buffer );
-
- off_offset = _OffsetArray (RGMModuleDesc, off_offset, topmost);
-
- for (i = 0, t_rec = m_rec->topmost;
- i < m_rec->count;
- i++, t_rec++, off_offset += sizeof (RGMTopmostDesc)) {
-
- sprintf (buffer, "(%d) %s", i, t_rec->index);
-
- src_append_machine_code (
- az_src_rec,
- _OffsetArray (RGMTopmostDesc, off_offset, index),
- strlen(t_rec->index), t_rec->index,
- buffer );
-
- } /* for */
-
- src_append_machine_code ( az_src_rec, 0, 0, 0, 0 );
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function adds an offset entry to the offset stack for
-** machine code. The entry is inserted in the proper place in
-** the stack depending on the offset value.
-**
-** FORMAL PARAMETERS:
-**
-** off_type type of offset entry
-** off_offset offset value for this offset entry
-**
-** IMPLICIT INPUTS:
-**
-** off_info_cnt number of offset stack entries
-** off_info_stack stack containing offset entries
-**
-** IMPLICIT OUTPUTS:
-**
-** off_info_cnt number of offset stack entries
-** off_info_stack stack containing offset entries
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** the offset info is saved in the offset stack
-**
-**--
-**/
-
-void off_put
-
- (unsigned short off_type, unsigned short off_offset)
-
-{
- off_info_type off_info, * off_info_ptr;
- int i;
-
- if (off_info_cnt >= k_off_stack_size) {
- diag_issue_internal_error ("stack overflow in machine listing");
- }
-
- off_info.w_off_type = off_type;
- off_info.w_off_offset = off_offset;
-
- /* Insert on the stack before the first entry with a lower offset
- value */
-
- for (i = 0, off_info_ptr = off_info_stack;
- i < off_info_cnt; i++, off_info_ptr++) {
- if (off_info.w_off_offset > off_info_ptr->w_off_offset) {
- break;
- }
- }
-
- _move ( & off_info_ptr [1], off_info_ptr,
- (off_info_cnt - i) * sizeof (off_info_type) );
-
- (* off_info_ptr) = off_info;
- off_info_cnt++;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function removes an offset entry to the offset stack for
-** machine code.
-**
-** FORMAL PARAMETERS:
-**
-** off_type address to receive the type of offset entry
-** off_offset address to receive the offset value for this
-** offset entry
-**
-** IMPLICIT INPUTS:
-**
-** off_info_cnt number of offset stack entries
-** off_info_stack stack containing offset entries
-**
-** IMPLICIT OUTPUTS:
-**
-** off_info_cnt number of offset stack entries
-** off_info_stack stack containing offset entries
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** the offset info is retrieved from the offset stack
-**
-**--
-**/
-
-void off_get (off_type, off_offset)
-
-unsigned short * off_type;
-unsigned short * off_offset;
-
-{
- off_info_type * off_info_ptr;
-
- if (off_info_cnt <= 0) {
- diag_issue_internal_error ("stack underflow in machine listing");
- }
-
- /* Remove from the stack the entry with the lowest offset value */
-
- off_info_ptr = & off_info_stack [off_info_cnt - 1];
-
- (* off_type) = off_info_ptr->w_off_type;
- (* off_offset) = off_info_ptr->w_off_offset;
-
- off_info_cnt--;
-
-}
-\f
-char * type_from_code
-
- (MrmType type_code)
-
-/*
- *++
- *
- * PROCEDURE DESCRIPTION:
- *
- * This procedure returns the string corresponding to a URM type code
- *
- * FORMAL PARAMETERS:
- *
- * type type code from RGMrType...
- *
- * IMPLICIT INPUTS:
- *
- * none
- *
- * IMPLICIT OUTPUTS:
- *
- * none
- *
- * FUNCTION VALUE:
- *
- * The string corresponding to the type code
- *
- * SIDE EFFECTS:
- *
- * none
- *
- *--
- */
-
-{
-
- switch (type_code)
- {
- case MrmRtypeInteger:
- return uil_datatype_names[sym_k_integer_value];
- case MrmRtypeHorizontalInteger:
- return uil_datatype_names[sym_k_horizontal_integer_value];
- case MrmRtypeVerticalInteger:
- return uil_datatype_names[sym_k_vertical_integer_value];
- case MrmRtypeBoolean:
- return uil_datatype_names[sym_k_bool_value];
- case MrmRtypeChar8:
- return uil_datatype_names[sym_k_char_8_value];
- case MrmRtypeChar8Vector:
- return uil_datatype_names[sym_k_asciz_table_value];
- case MrmRtypeCString:
- return uil_datatype_names[sym_k_compound_string_value];
- case MrmRtypeCStringVector:
- return uil_datatype_names[sym_k_string_table_value];
- case MrmRtypeFloat:
- return uil_datatype_names[sym_k_float_value];
- case MrmRtypeHorizontalFloat:
- return uil_datatype_names[sym_k_horizontal_float_value];
- case MrmRtypeVerticalFloat:
- return uil_datatype_names[sym_k_vertical_float_value];
- case MrmRtypeSingleFloat: /* single float data type RAP */
- return uil_datatype_names[sym_k_single_float_value];
- case MrmRtypeCallback:
- return "callback";
- case MrmRtypePixmapImage:
- return "pixmap image";
- case MrmRtypePixmapDDIF:
- return "pixmap DDIF";
- case MrmRtypeResource:
- return "resource";
- case MrmRtypeAddrName:
- return "addr name";
- case MrmRtypeIconImage:
- return uil_datatype_names[sym_k_icon_value];
- case MrmRtypeFont:
- return uil_datatype_names[sym_k_font_value];
- case MrmRtypeFontSet:
- return uil_datatype_names[sym_k_fontset_value];
- case MrmRtypeFontList:
- return uil_datatype_names[sym_k_font_table_value];
- case MrmRtypeColor:
- return uil_datatype_names[sym_k_color_value];
- case MrmRtypeColorTable:
- return uil_datatype_names[sym_k_color_table_value];
- case MrmRtypeAny:
- return uil_datatype_names[sym_k_any_value];
- case MrmRtypeTransTable:
- return uil_datatype_names[sym_k_trans_table_value];
- case MrmRtypeClassRecName:
- return uil_datatype_names[sym_k_class_rec_name_value];
- case MrmRtypeIntegerVector:
- return uil_datatype_names[sym_k_integer_table_value];
- case MrmRtypeXBitmapFile:
- return uil_datatype_names[sym_k_xbitmapfile_value];
- case MrmRtypeKeysym:
- return uil_datatype_names[sym_k_keysym_value];
- default:
- return "unknown";
- }
-
-}
-\f
-char * access_from_code
-
- (MrmFlag access_code)
-
-/*
- *++
- *
- * PROCEDURE DESCRIPTION:
- *
- * This procedure returns the string corresponding to a URM access code
- *
- * FORMAL PARAMETERS:
- *
- * access_code access code
- *
- * IMPLICIT INPUTS:
- *
- * none
- *
- * IMPLICIT OUTPUTS:
- *
- * none
- *
- * FUNCTION VALUE:
- *
- * The string corresponding to the access code
- *
- * SIDE EFFECTS:
- *
- * none
- *
- *--
- */
-
-{
-
- switch (access_code) {
- case URMaPublic: return "public";
- case URMaPrivate: return "private";
- default: return "unknown";
- }
-
-}
-\f
-char * group_from_code
-
- (MrmGroup group_code)
-
-/*
- *++
- *
- * PROCEDURE DESCRIPTION:
- *
- * This procedure returns the string corresponding to a URM group code
- *
- * FORMAL PARAMETERS:
- *
- * group_code group code
- *
- * IMPLICIT INPUTS:
- *
- * none
- *
- * IMPLICIT OUTPUTS:
- *
- * none
- *
- * FUNCTION VALUE:
- *
- * The string corresponding to the group code
- *
- * SIDE EFFECTS:
- *
- * none
- *
- *--
- */
-
-{
-
- switch (group_code) {
- case URMgWidget: return "widget";
- case URMgLiteral: return "literal";
- case URMgResourceSet: return "resource set";
- default: return "unknown";
- }
-
-}
-\f
-
-void format_arg_value (argval_ptr, buffer)
-
-RGMArgValuePtr argval_ptr;
-char * buffer;
-
-/*
- *++
- *
- * FUNCTION PROTOTYPE
- *
- * PROCEDURE DESCRIPTION:
- *
- * This routine formats a value descriptor into the buffer.
- *
- * FORMAL PARAMETERS:
- *
- * argval_ptr pointer to the argument value descriptor
- * buffer buffer to receive the formatted value
- *
- * IMPLICIT INPUTS:
- *
- *
- * IMPLICIT OUTPUTS:
- *
- *
- * FUNCTION VALUE:
- *
- * SIDE EFFECTS:
- *
- *
- *--
- */
-
-{
-
- switch ( argval_ptr->rep_type ) {
-
- case MrmRtypeInteger:
- case MrmRtypeHorizontalInteger:
- case MrmRtypeVerticalInteger:
- sprintf (buffer, "value: %d", argval_ptr->datum.ival);
- break;
-
- case MrmRtypeBoolean:
- if (argval_ptr->datum.ival) {
- sprintf (buffer, "value: true");
- } else {
- sprintf (buffer, "value: false");
- }
- break;
-
- case MrmRtypeChar8:
- case MrmRtypeCStringVector:
- case MrmRtypePixmapImage:
- case MrmRtypePixmapDDIF:
- case MrmRtypeCString:
- case MrmRtypeAddrName:
- case MrmRtypeKeysym:
- sprintf (buffer, "offset: %X (hex)", argval_ptr->datum.offset);
- off_put (k_unknown_off, argval_ptr->datum.offset);
- break;
-
- case MrmRtypeFloat:
- case MrmRtypeHorizontalFloat:
- case MrmRtypeVerticalFloat:
- sprintf (buffer, "offset: %X (hex)", argval_ptr->datum.offset);
- off_put (k_float_off, argval_ptr->datum.offset);
- break;
-
- case MrmRtypeSingleFloat: /* single float data type RAP */
- sprintf (buffer, "offset: %X (hex)", argval_ptr->datum.offset);
- off_put (k_single_float_off, argval_ptr->datum.offset);
- break;
-
- case MrmRtypeCallback:
- sprintf (buffer, "offset: %X (hex)", argval_ptr->datum.offset);
- off_put (k_callback_off, argval_ptr->datum.offset);
- break;
-
- case MrmRtypeResource:
- sprintf (buffer, "offset: %X (hex)", argval_ptr->datum.offset);
- off_put (k_resource_off, argval_ptr->datum.offset);
- break;
-
- default:
- sprintf (buffer, "value unknown");
- break;
- }
-
-}
-
-\f
-char * class_name_from_code
-
- (MrmCode class)
-
-/*
- *++
- *
- * PROCEDURE DESCRIPTION:
- *
- * This procedure returns the string corresponding to a URM class code
- *
- * FORMAL PARAMETERS:
- *
- * class class code from URMwc...
- *
- * IMPLICIT INPUTS:
- *
- * none
- *
- * IMPLICIT OUTPUTS:
- *
- * none
- *
- * FUNCTION VALUE:
- *
- * The string corresponding to the class code
- *
- * SIDE EFFECTS:
- *
- * none
- *
- *--
- */
-
-{
-
-int sym_code;
-
-
-/*
- * Find the sym_k code for the class, then return its name
- */
-for ( sym_code=sym_k_error_object+1;
- sym_code<=uil_max_object;
- sym_code++ )
- if ( uil_widget_compr[sym_code] == class )
- return uil_widget_names[sym_code];
-return "unknown";
-
-}
-
-\f
-char * resource_name_from_code
-
- (MrmCode resource)
-
-/*
- *++
- *
- * PROCEDURE DESCRIPTION:
- *
- * This procedure returns the string corresponding to a compression code
- *
- * FORMAL PARAMETERS:
- *
- * resource compression code for argument or reason
- *
- * IMPLICIT INPUTS:
- *
- * none
- *
- * IMPLICIT OUTPUTS:
- *
- * none
- *
- * FUNCTION VALUE:
- *
- * The string corresponding to the resource code
- *
- * SIDE EFFECTS:
- *
- * none
- *
- *--
- */
-
-{
-
-int sym_code;
-
-
-/*
- * Find the sym_k code for the resource, then return its name
- */
-for ( sym_code=0 ; sym_code<=uil_max_arg ; sym_code++ )
- if ( uil_arg_compr[sym_code] == resource )
- return uil_argument_names[sym_code];
-for ( sym_code=0 ; sym_code<=uil_max_reason ; sym_code++ )
- if ( uil_reas_compr[sym_code] == resource )
- return uil_reason_names[sym_code];
-for ( sym_code=0 ; sym_code<=uil_max_child ; sym_code++ )
- if ( uil_child_compr[sym_code] == resource )
- return uil_child_names[sym_code];
-return "unknown";
-
-}
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: UilMain.c /main/14 1996/06/03 15:49:20 pascale $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module is the main procedure of the UIL Compiler.
-**
-**--
-**/
-
-/*
-**
-** INCLUDE FILES
-**
-*/
-
-#include <X11/Xlocale.h>
-/* Sun's locale.h defines ON && OFF, which is also defined in UilLexPars.h */
-#ifdef ON
-#undef ON
-#endif
-#ifdef OFF
-#undef OFF
-#endif
-#ifndef X_NOT_STDC_ENV
-#include <stdlib.h>
-#endif
-#include "UilDefI.h"
-#include <setjmp.h>
-
-/*
-**
-** TABLE OF CONTENTS
-**
-*/
-
-/*
-** FORWARD DECLARATIONS
-*/
-
-
-extern int main _ARGUMENTS(( int l_argc , char *rac_argv []));
-
-static void common_main _ARGUMENTS(( void ));
-static void common_cleanup _ARGUMENTS(( void ));
-
-#ifdef CALLABLE
-static void UilWrapup _ARGUMENTS((Uil_compile_desc_type *compile_desc));
-#endif /* CALLABLE */
-
-/*
-**
-** EXTERNAL Definitions
-**
-*/
-
-
-#ifndef NO_MESSAGE_CATALOG
-#include <nl_types.h>
-#if !defined(NL_CAT_LOCALE)
-#define NL_CAT_LOCALE 0
-#endif
-
-externaldef(uilmsg) nl_catd uil_catd = NULL;
-
-#endif
-
-/*
-**
-** MODULE Definitions
-**
-*/
-
-static status return_status = 0;
-static jmp_buf environment;
-static unsigned module_flags = 0;
-static unsigned doing_exit = 0;
-
-/* Bit definitions for module_flags */
-
-#define compiler_called (1 << 0)
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This is the common part of the main routine.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** compilation occurs
-**
-**--
-**/
-
-static void common_main()
-{
-#ifndef NO_MESSAGE_CATALOG
- if (uil_catd == NULL)
- uil_catd = catopen("Uil", NL_CAT_LOCALE);
-#endif
-
- /* Initialize the X toolkit. */
- XtToolkitInitialize();
-
- /* use the user supplied data base instead */
- if (Uil_cmd_z_command.v_database)
- db_incorporate();
-
- /* initialize the diagnostic system */
- diag_initialize_diagnostics();
-
- /* initialize the symbol table */
- sym_initialize_storage();
-
- /* initialize the source */
- src_initialize_source();
-
- /* open listing file if requested */
- if (Uil_cmd_z_command.v_listing_file)
- lst_open_listing();
-
- /* initialize the lexical analyzer */
- lex_initialize_analyzer();
-
- /* initialize the keyword table */
- key_initialize();
-
- /* initialize the sar data structures */
- sar_initialize();
-
- /* call YACC to parse the source file */
- /* return 0 for success, 1 for failure */
- /* Make sure the root entry sections pointer is filled in */
- if (yyparse() != 0)
- diag_issue_diagnostic
- (d_inv_module, diag_k_no_source, diag_k_no_column);
- sym_az_root_entry->sections = sym_az_current_section_entry;
-
- /* call forward reference resolver */
- sem_resolve_forward_refs();
-
- /* call semantic validation */
- sem_validation ();
-
- /* call the output phase if requested */
- if (Uil_cmd_z_command.v_resource_file)
- sem_output_uid_file();
-
- /* call symbol table dumper - if requested */
-#if debug_version
- if (uil_v_dump_symbols == TRUE)
- sym_dump_symbols();
-#endif
-
-
- /* write compilation summary */
- diag_issue_summary();
-
-
- /* write listing file if requested */
- if (Uil_cmd_z_command.v_listing_file)
- lst_output_listing();
-
- /* Storage is not cleaned up, since we will exit */
- uil_exit( uil_l_compile_status );
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This is the image termination procedure for the UIL compiler.
-**
-** FORMAL PARAMETERS:
-**
-** severity status of compilation on exit
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** never return from this procedure
-**
-**--
-**/
-
-void uil_exit(severity)
-
-int severity;
-
-{
-
-
-
-
- /* Prevent multiple looping through this routine */
- if ( doing_exit ) return;
- doing_exit = 1;
-
- return_status = (severity >= uil_k_error_status);
-
- /* Close and remove the uid file if it's still open. */
- /* It will only be open if a severe error occurred during the output */
- /* of the uid file. */
-
- if (out_az_idbfile_id != NULL)
- UrmIdbCloseFile (out_az_idbfile_id, FALSE);
-
- /* If compiler called, return to calling program rather than */
- /* exiting process */
-
- if (module_flags & compiler_called)
- longjmp (environment, 1);
-
- /* RAP FIX for listing files */
- common_cleanup();
-
-
- exit(return_status);
-}
-
-\f
-
-
-\f
-
-#ifndef CALLABLE
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This is the main routine
-**
-** FORMAL PARAMETERS:
-**
-** l_argc: the number of command line arguments
-** rac_argv: an array of pointers to character array arguments
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** COMPLETION CODES:
-**
-** 1 if errors; 0 otherwise
-**
-** SIDE EFFECTS:
-**
-** produce possibly a resource file and a listing file
-**--
-**/
-
-int main( l_argc, rac_argv )
-int l_argc;
-char *rac_argv[ ];
-{
-
- setlocale(LC_ALL, "");
-
- /* call routine to parse the command line */
-
- cmd_decode_command_line( l_argc, rac_argv );
-
- /* call common main routine */
-
- common_main();
-
-}
-#endif /* !CALLABLE */
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This is the dynamic memory cleanup routine. It calls all facility
-** provided cleanup routines so that dynamic structures can be released.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** all dynamic memory is freed
-**
-**--
-**/
-
-static void common_cleanup()
-{
-
- /* cleanup the source file information */
-
- Uil_src_cleanup_source();
-
-
- /* cleanup listing facility */
-
- Uil_lst_cleanup_listing();
-
-
- /* cleanup the lexical analyzer */
-
- Uil_lex_cleanup_analyzer();
-
-
- return;
-}
-
-\f
-#ifdef CALLABLE
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This is the callable entry point for the UIL Compiler.
-**
-** FORMAL PARAMETERS:
-**
-** command_desc pointer to data structure defining UIL command line
-**
-** compile_desc pointer to data structure describing the results of
-** the compilation.
-**
-** message_cb callback routine to process messages
-**
-** message_data user-data passed to the message_cb
-**
-** status_cb callback routine to process messages
-**
-** status_data user-data passed to the status_cb
-**
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** COMPLETION CODES:
-**
-** uil$_normal if no errors; uil$_no_output otherwise
-**
-** SIDE EFFECTS:
-**
-** none
-**--
-**/
-
-
-Uil_status_type Uil
-
-(Uil_command_type *command_desc,
-Uil_compile_desc_type *compile_desc,
-Uil_continue_type (*message_cb)(),
-char *message_data,
-Uil_continue_type (*status_cb)(),
-char *status_data)
-
-
-{
-
- /* Indicate compiler called rather than being started via command line */
-
- module_flags = module_flags | compiler_called;
- doing_exit = 0;
-
-
- /* Initialize command line data structure */
-
- Uil_cmd_z_command.ac_database = command_desc -> database;
- Uil_cmd_z_command.v_database = command_desc -> database_flag;
- Uil_cmd_z_command.ac_source_file = command_desc -> source_file;
- Uil_cmd_z_command.ac_resource_file = command_desc -> resource_file;
- Uil_cmd_z_command.ac_listing_file = command_desc -> listing_file;
- Uil_cmd_z_command.include_dir_count = command_desc -> include_dir_count;
- Uil_cmd_z_command.ac_include_dir = command_desc -> include_dir;
- Uil_cmd_z_command.v_listing_file = command_desc -> listing_file_flag;
- Uil_cmd_z_command.v_resource_file = command_desc -> resource_file_flag;
- Uil_cmd_z_command.v_show_machine_code = command_desc -> machine_code_flag;
- Uil_cmd_z_command.v_report_info_msg = command_desc -> report_info_msg_flag;
- Uil_cmd_z_command.v_report_warn_msg = command_desc -> report_warn_msg_flag;
- Uil_cmd_z_command.v_parse_tree = command_desc -> parse_tree_flag;
- Uil_cmd_z_command.v_use_setlocale = command_desc -> use_setlocale_flag;
- Uil_cmd_z_command.v_issue_summary = command_desc -> issue_summary;
- Uil_cmd_z_command.status_update_delay = command_desc -> status_update_delay;
- Uil_cmd_z_command.message_cb = message_cb;
- Uil_cmd_z_command.message_data = message_data;
- Uil_cmd_z_command.status_cb = status_cb;
- Uil_cmd_z_command.status_data = status_data;
-
- /* The setjmp function allows us to unwind from a fatal error setjmp is */
- /* nonzero if we are returning from a fatal error */
-
- if (setjmp(environment) == 0) {
-
- /* use the user supplied data base instead. If no source file
- is given (this call is only to change the database), return at
- this point with a success. */
- if ( Uil_cmd_z_command.v_database )
- {
- db_incorporate ();
- if ( Uil_cmd_z_command.ac_source_file == NULL )
- uil_exit (uil_k_success_status);
- }
-
- /* initialize the diagnostic system */
- uil_l_compile_status = uil_k_success_status;
- diag_initialize_diagnostics();
-
- /* initialize the symbol table */
- sym_initialize_storage();
-
- /* initialize the source */
- src_initialize_source();
-
- /* open listing file if requested */
- if (Uil_cmd_z_command.v_listing_file)
- lst_open_listing();
-
- /* initialize the lexical analyzer */
- lex_initialize_analyzer();
-
- /* initialize the keyword table */
- key_initialize();
-
- /* initialize the sar data structures */
- sar_initialize();
-
- /* call YACC to parse the source file */
- /* return 0 for success, 1 for failure */
- /* Make sure the root entry sections pointer is filled in */
- if (yyparse() != 0)
- diag_issue_diagnostic
- (d_inv_module, diag_k_no_source, diag_k_no_column);
- sym_az_root_entry->sections = sym_az_current_section_entry;
-
- /* call forward reference resolver */
- sem_resolve_forward_refs();
-
- /* call semantic validation */
- sem_validation ();
-
- /* call the output phase if requested */
- if (Uil_cmd_z_command.v_resource_file)
- sem_output_uid_file();
-
- /* call symbol table dumper - if requested */
-#if debug_version
- if (uil_v_dump_symbols == TRUE)
- sym_dump_symbols();
-#endif
-
- /* Perform standard wrapup processing */
- UilWrapup (compile_desc);
-
-/*
- * Fix for CR 5534 - call the routine to restore the old signal handlers
- */
- diag_restore_diagnostics();
-/*
- * End Fix for CR 5534
- */
-
- /* exit with the compile status */
- return uil_l_compile_status;
-
- }
-
- /*
- ** longjmp return from setjmp. This is the case of a return via
- ** uil_exit the value return_status is set by uil_exit.
- */
- else
- {
- /* Do standard compiler wrapup */
- UilWrapup (compile_desc);
-
- /* return the status set by uil_exit */
- return uil_l_compile_status;
-
- }
-
-}
-
-/*
- * Local function to provide compiler wrapup processing. It is called both
- * from the longjmp and sequential paths in the callable compiler above.
- */
-static void UilWrapup (compile_desc)
- Uil_compile_desc_type *compile_desc;
-
-{
-
- int i; /* loop index for copying message counts */
-
- /* write compilation summary if requested */
- if ( Uil_cmd_z_command.v_issue_summary )
- diag_issue_summary();
-
- /* write listing file if requested */
- if (Uil_cmd_z_command.v_listing_file)
- lst_output_listing();
-
- /*
- ** fill in the "parse tree root" in the compile descriptor,
- ** and set the version for the compiler and the symbol table
- ** structure.
- */
- compile_desc->parse_tree_root = (char *)sym_az_root_entry;
- compile_desc->data_version = _data_version;
- compile_desc->compiler_version = _compiler_version_int;
-
- /* Fill in the message_summary array in the compile_desc */
- for (i = uil_k_min_status; i <= uil_k_max_status; i++)
- compile_desc->message_count[i] = Uil_message_count[i];
-
- /* If there are any error/severe messages, then don't return */
- /* a symbol table for the callable compiler - clean up here */
- if ( Uil_message_count[Uil_k_error_status]>0 ||
- Uil_message_count[Uil_k_severe_status]>0 )
- {
- Uil_cmd_z_command.v_parse_tree = FALSE;
- compile_desc->parse_tree_root = NULL;
- }
-
- /* Call the cleanup routine to free dynamic memory */
- common_cleanup();
-
- /* Cleanup storage; what is cleaned up depends on whether compiler */
- /* was called or not */
- Uil_sym_cleanup_storage (Uil_cmd_z_command.v_parse_tree!=1);
-
- }
-
-#endif /* CALLABLE */
-
-#ifdef NO_MEMMOVE
-
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This is a memmove function that explicitly handles
-** overlapping memory areas. Written in response to
-** CR 4851.
-**
-** FORMAL PARAMETERS:
-**
-** same as memcpy
-**
-** COMPLETION CODES:
-**
-** same as memcpy
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-char *uil_mmove(s1, s2, n)
-char *s1, *s2;
-int n;
-{
- char *temp;
-
- if(s2 == s1)
- return(s2);
- if(s2 < s1 && s1 <= s2 + n){
- if(temp = (char *)malloc(n)){
- memcpy(temp, s2, n);
- memcpy(s1, temp, n);
- free(temp);
- return(s1);
- }
- printf("uil_mmove: Memory allocation failed!\n");
- exit(-1);
- }
- return((char *)memcpy(s1, s2, n));
-}
-#endif /* NO_MEMMOVE */
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilMess.h /main/10 1995/07/14 09:35:51 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-#define d_add_source 2
-#define d_arg_count 23
-#define d_arg_type 24
-#define d_backslash_ignored 11
-#define d_bad_argument 72
-#define d_bad_database 73
-#define d_bad_lang_value 67
-#define d_bug_check 5
-#define d_cannot_convert 71
-#define d_circular_def 45
-#define d_circular_ref 63
-#define d_control_char 9
-#define d_create_proc 41
-#define d_create_proc_inv 42
-#define d_create_proc_req 43
-#define d_ctx_req 16
-#define d_default_charset 80
-#define d_different_units 79
-#define d_dup_letter 52
-#define d_dup_list 27
-#define d_dupl_opt 0
-#define d_future_version 74
-#define d_gadget_not_sup 57
-#define d_icon_letter 54
-#define d_icon_width 53
-#define d_illegal_forward_ref 70
-#define d_include_file 78
-#define d_info 31
-#define d_inv_module 35
-#define d_invalid_enumval 66
-#define d_list_item 28
-#define d_listing_open 33
-#define d_listing_write 34
-#define d_miss_opt_arg 32
-#define d_name_too_long 12
-#define d_names 50
-#define d_never_def 26
-#define d_no_enumset 65
-#define d_no_source 46
-#define d_no_uid 40
-#define d_nonpvt 22
-#define d_not_impl 17
-#define d_null 44
-#define d_obj_type 25
-#define d_operand_type 58
-#define d_out_of_memory 13
-#define d_out_range 7
-#define d_override_builtin 64
-#define d_prev_error 29
-#define d_previous_def 21
-#define d_single_control 48
-#define d_single_letter 51
-#define d_single_occur 47
-#define d_src_close 62
-#define d_src_limit 36
-#define d_src_null_char 37
-#define d_src_open 3
-#define d_src_read 4
-#define d_src_truncate 6
-#define d_submit_spr 30
-#define d_subnotall 56
-#define d_summary 38
-#define d_supersede 20
-#define d_syntax 14
-#define d_too_many 55
-#define d_too_many_dirs 61
-#define d_uid_open 39
-#define d_uid_write 76
-#define d_undefined 15
-#define d_unknown_charset 49
-#define d_unknown_classrecnam 77
-#define d_unknown_opt 1
-#define d_unknown_seq 10
-#define d_unsupp_charset 59
-#define d_unsupp_const 60
-#define d_unsupported 19
-#define d_unterm_seq 8
-#define d_value_too_large 69
-#define d_widget_cycle 68
-#define d_wmd_open 75
-#define d_wrong_type 18
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilMessTab.h /main/11 1995/07/14 09:36:09 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** DECwindows Toolkit User Interface Language Compiler (UIL)
-**--
-**/
-
-
-char XmConst msg0[36] = "duplicate option \"%s\" was ignored";
-char XmConst msg1[34] = "unknown option \"%s\" was ignored";
-char XmConst msg2[43] = "additional UIL source file: %s was ignored";
-char XmConst msg3[30] = "error opening source file: %s";
-char XmConst msg4[43] = "error reading next line of source file: %s";
-char XmConst msg5[19] = "Internal error: %s";
-char XmConst msg6[32] = "line truncated at %d characters";
-char XmConst msg7[31] = "value of %s is out of range %s";
-char XmConst msg8[21] = "%s not terminated %s";
-char XmConst msg9[37] = "unprintable character \\%d\\ ignored";
-char XmConst msg10[32] = "unknown sequence \"%s\" ignored";
-char XmConst msg11[46] = "unknown escape sequence \"\\%c\" - \\ ignored";
-char XmConst msg12[46] = "name exceeds %d characters - truncated to: %s";
-char XmConst msg13[35] = "compiler ran out of virtual memory";
-char XmConst msg14[56] = "unexpected %s token seen - parsing resumes after \"%c\"";
-char XmConst msg15[44] = "%s %s must be defined before this reference";
-char XmConst msg16[41] = "context requires a %s - %s was specified";
-char XmConst msg17[26] = "%s is not implemented yet";
-char XmConst msg18[39] = "found %s value when expecting %s value";
-char XmConst msg19[45] = "the %s %s is not supported for the %s object";
-char XmConst msg20[62] = "this %s %s is superseded by the last definition in this %s %s";
-char XmConst msg21[33] = "name %s previously defined as %s";
-char XmConst msg22[43] = "value used in this context must be private";
-char XmConst msg23[55] = "procedure %s was previously declared with %d arguments";
-char XmConst msg24[56] = "found %s value - procedure %s argument must be %s value";
-char XmConst msg25[33] = "found %s %s when expecting %s %s";
-char XmConst msg26[24] = "%s %s was never defined";
-char XmConst msg27[39] = "%s %s already specified for this %s %s";
-char XmConst msg28[29] = "%s item not allowed in %s %s";
-char XmConst msg29[45] = "compilation terminated - fix previous errors";
-char XmConst msg30[38] = "internal error - submit defect report";
-char XmConst msg31[2] = " ";
-char XmConst msg32[35] = "%s missing following \"%s\" option";
-char XmConst msg33[31] = "error opening listing file: %s";
-char XmConst msg34[34] = "error writing to listing file: %s";
-char XmConst msg35[51] = "invalid module structure - check UIL module syntax";
-char XmConst msg36[31] = "too many source files open: %s";
-char XmConst msg37[38] = "source line contains a null character";
-char XmConst msg38[45] = "errors: %d warnings: %d informationals: %d";
-char XmConst msg39[27] = "error opening UID file: %s";
-char XmConst msg40[25] = "no UID file was produced";
-char XmConst msg41[53] = "creation procedure is not supported by the %s widget";
-char XmConst msg42[59] = "creation procedure is not allowed in a %s widget reference";
-char XmConst msg43[58] = "creation procedure is required in a %s widget declaration";
-char XmConst msg44[46] = "a NULL character in a string is not supported";
-char XmConst msg45[43] = "widget %s is part of a circular definition";
-char XmConst msg46[25] = "no source file specified";
-char XmConst msg47[35] = "%s %s supports only a single %s %s";
-char XmConst msg48[41] = "%s widget supports only a single control";
-char XmConst msg49[22] = "unknown character set";
-char XmConst msg50[47] = "place names clause before other module clauses";
-char XmConst msg51[47] = "color letter string must be a single character";
-char XmConst msg52[48] = "color letter used for prior color in this table";
-char XmConst msg53[37] = "row %d must have same width as row 1";
-char XmConst msg54[52] = "row %d, column %d: letter \"%c\" not in color table";
-char XmConst msg55[32] = "too many %ss in %s, limit is %d";
-char XmConst msg56[48] = "Subqualifier not allowed with negated qualifier";
-char XmConst msg57[60] = "%s gadget is not supported - %s widget will be used instead";
-char XmConst msg58[28] = "%s type is not valid for %s";
-char XmConst msg59[66] = "support for this character set may be removed in a future release";
-char XmConst msg60[49] = "the %s constraint is not supported for the %s %s";
-char XmConst msg61[37] = "too many \"%s\" options, limit is %d";
-char XmConst msg62[30] = "error closing source file: %s";
-char XmConst msg63[35] = "the %s value is circularly defined";
-char XmConst msg64[28] = "overriding built-in name %s";
-char XmConst msg65[51] = "the %s argument does not support enumerated values";
-char XmConst msg66[57] = "the %s argument does not support the %s enumerated value";
-char XmConst msg67[40] = "$LANG contains an unknown character set";
-char XmConst msg68[66] = "the %s object's controls hierarchy contains a reference to itself";
-char XmConst msg69[41] = "value %s is too large for context buffer";
-char XmConst msg70[42] = "forward referencing is not allowed for %s";
-char XmConst msg71[34] = "cannot convert %s type to %s type";
-char XmConst msg72[14] = "%s is invalid";
-char XmConst msg73[30] = "error reading binary database";
-char XmConst msg74[47] = "binary database compiled with a future version";
-char XmConst msg75[32] = "error opening database file: %s";
-char XmConst msg76[27] = "error writing UID file: %s";
-char XmConst msg77[45] = "'%s' is an unknown Toolkit class record name";
-char XmConst msg78[26] = "invalid include file name";
-char XmConst msg79[49] = "incompatible unit types for arithmetic operation";
-char XmConst msg80[54] = "%s used as charset name; %s used as charset component";
-
-typedef struct
-{
- XmConst int l_severity;
- char XmConst *ac_text;
-} diag_rz_msg_entry;
-
-XmConst diag_rz_msg_entry diag_rz_msg_table[81] =
- {
- { 2, msg0 },
- { 2, msg1 },
- { 3, msg2 },
- { 4, msg3 },
- { 4, msg4 },
- { 4, msg5 },
- { 3, msg6 },
- { 3, msg7 },
- { 3, msg8 },
- { 3, msg9 },
- { 3, msg10 },
- { 3, msg11 },
- { 3, msg12 },
- { 4, msg13 },
- { 3, msg14 },
- { 3, msg15 },
- { 3, msg16 },
- { 3, msg17 },
- { 3, msg18 },
- { 2, msg19 },
- { 1, msg20 },
- { 3, msg21 },
- { 3, msg22 },
- { 3, msg23 },
- { 3, msg24 },
- { 3, msg25 },
- { 3, msg26 },
- { 3, msg27 },
- { 3, msg28 },
- { 4, msg29 },
- { 4, msg30 },
- { 1, msg31 },
- { 3, msg32 },
- { 4, msg33 },
- { 4, msg34 },
- { 3, msg35 },
- { 4, msg36 },
- { 3, msg37 },
- { 1, msg38 },
- { 4, msg39 },
- { 1, msg40 },
- { 3, msg41 },
- { 3, msg42 },
- { 3, msg43 },
- { 2, msg44 },
- { 3, msg45 },
- { 4, msg46 },
- { 2, msg47 },
- { 2, msg48 },
- { 3, msg49 },
- { 3, msg50 },
- { 3, msg51 },
- { 3, msg52 },
- { 3, msg53 },
- { 3, msg54 },
- { 3, msg55 },
- { 4, msg56 },
- { 2, msg57 },
- { 3, msg58 },
- { 2, msg59 },
- { 2, msg60 },
- { 2, msg61 },
- { 2, msg62 },
- { 3, msg63 },
- { 2, msg64 },
- { 2, msg65 },
- { 2, msg66 },
- { 3, msg67 },
- { 3, msg68 },
- { 4, msg69 },
- { 4, msg70 },
- { 3, msg71 },
- { 3, msg72 },
- { 4, msg73 },
- { 4, msg74 },
- { 4, msg75 },
- { 4, msg76 },
- { 2, msg77 },
- { 4, msg78 },
- { 4, msg79 },
- { 1, msg80 },
- };
-
-#ifndef NO_MESSAGE_CATALOG
-#include <nl_types.h>
-#include "UilMsgCatI.h"
-externalref nl_catd uil_catd;
-
-XmConst int msg_cat_table[81] = {
- UIL_0, UIL_1, UIL_2, UIL_3, UIL_4,
- UIL_5, UIL_6, UIL_7, UIL_8, UIL_9,
- UIL_10, UIL_11, UIL_12, UIL_13, UIL_14,
- UIL_15, UIL_16, UIL_17, UIL_18, UIL_19,
- UIL_20, UIL_21, UIL_22, UIL_23, UIL_24,
- UIL_25, UIL_26, UIL_27, UIL_28, UIL_29,
- UIL_30, UIL_31, UIL_32, UIL_33, UIL_34,
- UIL_35, UIL_36, UIL_37, UIL_38, UIL_39,
- UIL_40, UIL_41, UIL_42, UIL_43, UIL_44,
- UIL_45, UIL_46, UIL_47, UIL_48, UIL_49,
- UIL_50, UIL_51, UIL_52, UIL_53, UIL_54,
- UIL_55, UIL_56, UIL_57, UIL_58, UIL_59,
- UIL_60, UIL_61, UIL_62, UIL_63, UIL_64,
- UIL_65, UIL_66, UIL_67, UIL_68, UIL_69,
- UIL_70, UIL_71, UIL_72,
- UIL_V2_73, UIL_V2_74, UIL_V2_75, UIL_V2_76,
- UIL_V2_77, UIL_78, UIL_V2_79, UIL_V2_80,
-};
-
-#endif
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilP2Out.c /main/15 1997/03/12 15:17:24 dbl $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contain the routines for creating the UID file.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#ifdef DXM_V11
-#include <DXm/DXmHelpB.h>
-#endif
-
-#include "UilDefI.h"
-#include "UilSymGen.h"
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-#ifdef WORD64
-#define _shift 3
-#else
-#define _shift 2
-#endif
-
-#define initial_context_size 2048
-/* alpha port note:
- the original define makes some assumptions on the sizes of the
- structures when calculating this value. I 'think' I have devined
- the intent of this and have replaced it with a more generic
- calculation.
- */
-#define out_k_last_offset \
- (((src_k_max_source_line_length +1) / sizeof(sym_entry_type *)))
-
-/* #define out_k_last_offset ((sizeof( src_source_buffer_type )>>_shift)-2) */
-
-typedef struct _out_queue_type
-{
- struct _out_queue_type *az_prior_queue;
- sym_entry_type *entry[out_k_last_offset + 1];
-} out_queue_type;
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-char *_get_memory();
-void _free_memory();
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-externaldef(uil_comp_glbl) IDBFile out_az_idbfile_id;
-
-static URMResourceContext *out_az_context;
-static out_queue_type *out_az_queue;
-static int out_l_next_offset;
-static UidCompressionTable *extern_arg_compr;
-static UidCompressionTable *extern_class_compr;
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function begins the process of creating the UID file. It
-** handles:
-** 1) creating the UID file and closing it
-** 2) initializing the queue of other objects to be processed
-** 3) creating the module widget
-** 4) emitting exported literals and procedures
-** 5) creating the compression code table for this UID file
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_external_def_chain list of exported object
-** src_az_avail_source_buffer use source buffers for queue of objects
-** requiring further attention
-**
-** IMPLICIT OUTPUTS:
-**
-** src_az_avail_source_buffer
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** UID file is created
-**
-**--
-**/
-
-void sem_output_uid_file()
-
-{
- sym_external_def_entry_type *ext_entry;
- char *module_version;
- char *module_name;
- status urm_status;
- sym_entry_type *symbol_entry;
- int topmost_widget_count;
- int topmost_index;
- struct
- { MrmOsOpenParam os_param;
- char result_file[256];
- } uid_fcb;
-
-
- /*
- ** No UID file is created if any error severity message has
- ** been emitted.
- */
-
- if (uil_l_compile_status >= uil_k_error_status)
- {
- diag_issue_diagnostic(
- d_no_uid,
- diag_k_no_source,
- diag_k_no_column );
-
- return;
- }
-
- /*
- ** Request URM hold error message and report via status rather
- ** that sending them to stdout. This permits the compiler to
- ** deal with the messages as it does with others.
- */
-
- urm_status =
- Urm__UT_SetErrorReport( URMErrOutMemory );
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "allocating context" );
-
- /*
- ** Open the UID file
- */
- uid_fcb.os_param.version = MrmOsOpenParamVersion;
-
-
- /* clobber flag lets a.uid replace an existing a.uid */
- uid_fcb.os_param.nam_flg.clobber_flg = TRUE;
-
- module_version = "";
- module_name = sym_az_module_entry->obj_header.az_name->c_text;
-
- if (sym_az_module_entry->az_version != NULL)
- module_version = sym_az_module_entry->az_version->value.c_value;
-
- urm_status = UrmIdbOpenFileWrite
- ( Uil_cmd_z_command.ac_resource_file,
- & uid_fcb.os_param,
- _host_compiler,
- _compiler_version,
- module_name,
- module_version,
- &out_az_idbfile_id,
- uid_fcb.result_file );
-
- if (urm_status != MrmSUCCESS)
- {
- diag_issue_diagnostic(
- d_uid_open,
- diag_k_no_source,
- diag_k_no_column,
- uid_fcb.result_file );
-
- return;
- }
-
-
- /*
- ** Set the name of the file we are accessing as the current file and call
- ** the Status callback routine to report our progress.
- */
- Uil_current_file = uid_fcb.result_file;
- if (Uil_cmd_z_command.status_cb != (Uil_continue_type(*)())NULL)
- diag_report_status();
-
-
- /*
- ** Create a context
- */
-
- urm_status =
- UrmGetResourceContext ( _get_memory, _free_memory,
- initial_context_size, &out_az_context );
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "allocating context" );
-
- /*
- ** Initialize queue of objects to be processed.
- */
-
- out_l_next_offset = 0;
- out_az_queue = (out_queue_type *)src_az_avail_source_buffer;
- out_az_queue->az_prior_queue = NULL;
- src_az_avail_source_buffer =
- src_az_avail_source_buffer->az_prior_source_buffer;
-
- /*
- ** Count the number of topmost widgets by scanning the external list.
- ** A topmost widget is one that is not referenced.
- */
-
- topmost_widget_count = 0;
-
- for (ext_entry = sym_az_external_def_chain;
- ext_entry != NULL;
- ext_entry = ext_entry->az_next_object)
- {
- symbol_entry = ext_entry->az_name->az_object;
-
- if (symbol_entry->header.b_tag == sym_k_widget_entry)
- if ((((sym_widget_entry_type *)symbol_entry)->
- obj_header.az_name->b_flags & sym_m_referenced) == 0)
- topmost_widget_count++;
-
- }
-
- /*
- ** Initialize the context to build the interface module.
- */
-
- urm_status =
- UrmIFMInitModule
- ( out_az_context, topmost_widget_count, URMaPublic, FALSE );
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "initializing module" );
-
- /*
- ** Create the compression code table for use with this UID file.
- */
-
- create_int_compression_codes();
-
- /*
- ** Exported objects are on a chain that we will now walk.
- ** They can be of 3 types: widgets, gadgets and values.
- ** Values, gadgets and widgets are pushed on LIFO queue and processed
- ** shortly.
- ** Each widget on the list is top most if it is not referenced. Topmost
- ** widgets are added to the current context for the interface module.
- */
-
- topmost_index = 0;
-
- for (ext_entry = sym_az_external_def_chain;
- ext_entry != NULL;
- ext_entry = ext_entry->az_next_object)
- {
- /*
- ** Call the Status callback routine to report our progress.
- */
- /* %COMPLETE */
- Uil_percent_complete=CEIL(
- 80+ (.20 *((float)topmost_index/(float)(topmost_widget_count+.5)))*100, 80);
-
- if (Uil_cmd_z_command.status_cb != (Uil_continue_type(*)())NULL)
- diag_report_status();
-
- symbol_entry = ext_entry->az_name->az_object;
-
- switch (symbol_entry->header.b_tag)
- {
-
- case sym_k_value_entry:
- {
- sym_value_entry_type *value_entry;
-
- value_entry = (sym_value_entry_type *)symbol_entry;
-
- value_entry->output_state = sym_k_queued;
-
- push( (sym_entry_type *)value_entry );
-
- break;
- }
-
- case sym_k_gadget_entry:
- case sym_k_widget_entry:
- {
- sym_widget_entry_type *widget_entry;
-
- widget_entry = (sym_widget_entry_type *)symbol_entry;
-
- if ((widget_entry->obj_header.az_name->b_flags & sym_m_referenced)
- == 0)
- {
- widget_entry->output_state = sym_k_queued;
-
- push((sym_entry_type *) widget_entry );
-
- urm_status =
- UrmIFMSetTopmost
- ( out_az_context,
- topmost_index,
- widget_entry->obj_header.az_name->c_text );
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "adding topmost widget" );
-
- topmost_index++;
- }
-
- break;
- }
-
- default:
- _assert( FALSE, "unexpected entry on external chain");
- break;
- }
- }
-
- /*
- ** Emit the Interface Module
- */
-
- urm_status =
- UrmIFMPutModule
- ( out_az_idbfile_id, module_name, out_az_context );
- if( urm_status != MrmSUCCESS)
- {
- if (urm_status == MrmEOF)
- diag_issue_diagnostic ( d_uid_write, diag_k_no_source,
- diag_k_no_column, Uil_current_file );
- else
- issue_urm_error( "emitting module" );
- }
-
- if (Uil_cmd_z_command.v_show_machine_code) {
- save_module_machine_code
- ( src_az_module_source_record, out_az_context );
- }
-
- /*
- ** Start to process the widgets that have been pushed on
- ** the queue.
- */
-
- for (symbol_entry = pop(); symbol_entry != NULL; symbol_entry = pop() )
- {
- /*
- ** Call the Status callback routine to report our progress.
- */
- if (Uil_cmd_z_command.status_cb != (Uil_continue_type(*)())NULL)
- diag_report_status();
-
- switch (symbol_entry->header.b_tag)
- {
-
- case sym_k_value_entry:
- out_emit_value(( sym_value_entry_type *) symbol_entry );
- break;
-
- case sym_k_widget_entry:
- case sym_k_gadget_entry:
- case sym_k_child_entry:
- out_emit_widget(( sym_widget_entry_type *) symbol_entry );
- break;
-
- default:
- _assert( FALSE, "unexpected entry popped during output");
- break;
- }
- }
-
- create_ext_compression_codes ();
-
- /*
- ** Close the UID file - if there are errors don't keep the file
- */
-
- urm_status = (uil_l_compile_status < uil_k_error_status);
-
- if (!urm_status)
- {
- diag_issue_diagnostic
- ( d_no_uid, diag_k_no_source, diag_k_no_column );
- }
-
- urm_status =
- UrmIdbCloseFile( out_az_idbfile_id, urm_status );
- out_az_idbfile_id = NULL;
- if( urm_status != MrmSUCCESS)
- diag_issue_diagnostic
- ( d_uid_write, diag_k_no_source, diag_k_no_column, Uil_current_file );
-
-
- /*
- ** Free the context
- */
-
- urm_status =
- UrmFreeResourceContext( out_az_context );
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "freeing context" );
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function pushes a symbol table entry into a LIFO queue.
-**
-** FORMAL PARAMETERS:
-**
-** sym_entry pointer to symbol table to push
-**
-** IMPLICIT INPUTS:
-**
-** out_l_next_offset next offset in current queue
-** out_az_queue current queue
-** src_az_avail_source_buffer
-** next available queue buffer
-**
-** IMPLICIT OUTPUTS:
-**
-** same as inputs
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** argument is placed on a queue
-**
-**--
-**/
-
-void push(sym_entry)
-
-sym_entry_type *sym_entry;
-
-{
-
- out_queue_type *next_queue;
-
- /*
- ** We reuse source buffers for the output queues.
- */
-
- if (out_l_next_offset > out_k_last_offset)
- {
- if (src_az_avail_source_buffer == NULL)
- {
- src_az_avail_source_buffer =
- (src_source_buffer_type *)
- _get_memory( sizeof( src_source_buffer_type ) );
- src_az_avail_source_buffer->az_prior_source_buffer = NULL;
- }
-
- next_queue = (out_queue_type *)src_az_avail_source_buffer;
- src_az_avail_source_buffer =
- src_az_avail_source_buffer->az_prior_source_buffer;
-
- next_queue->az_prior_queue = out_az_queue;
- out_az_queue = next_queue;
- out_l_next_offset = 0;
- }
-
- out_az_queue->entry[out_l_next_offset] = sym_entry;
-
- out_l_next_offset++;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function pops a symbol table entry from a LIFO queue.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** out_l_next_offset next offset in current queue
-** out_az_queue current queue
-** src_az_avail_source_buffer
-** next available queue buffer
-**
-** IMPLICIT OUTPUTS:
-**
-** same as inputs
-**
-** FUNCTION VALUE:
-**
-** sym_entry pointer to symbol table popped
-** NULL when no more to pop
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-sym_entry_type *pop()
-
-{
-
- src_source_buffer_type *avail_buffer;
-
- out_l_next_offset--;
-
- if (out_l_next_offset < 0)
- {
- avail_buffer = (src_source_buffer_type *)out_az_queue;
- out_az_queue = out_az_queue->az_prior_queue;
- avail_buffer->az_prior_source_buffer = src_az_avail_source_buffer;
- src_az_avail_source_buffer = avail_buffer;
-
- if (out_az_queue == NULL)
- return NULL;
-
- out_l_next_offset = out_k_last_offset;
- }
-
- return out_az_queue->entry[out_l_next_offset];
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds the URM record for a widget.
-**
-** FORMAL PARAMETERS:
-**
-** widget_entry symbol table pointer for a widget
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** write a widget record to UID file
-** push other objects on the queue to be processed
-**
-**--
-**/
-
-void out_emit_widget( widget_entry )
-
-sym_widget_entry_type *widget_entry;
-
-{
-
-char buffer[32];
-char *widget_name;
-char *widget_class_name;
-unsigned int widget_class;
-unsigned long widget_variety;
-int arg_count;
-int related_arg_count;
-int arglist_index;
-sym_list_entry_type *list_entry;
-MrmCode access_code;
-status urm_status;
-MrmCode subtree_code;
-sym_control_entry_type *subtree_control;
-
-
-_assert( (widget_entry->header.b_tag == sym_k_widget_entry) ||
- (widget_entry->header.b_tag == sym_k_gadget_entry) ||
- (widget_entry->header.b_tag == sym_k_child_entry),
- "object to be emitted is not an object" );
-
-_assert( (widget_entry->obj_header.b_flags &
- (sym_m_exported | sym_m_private)),
- "object being emitted is not exported or private" );
-
-if (widget_entry->header.b_tag == sym_k_child_entry)
- widget_variety = UilMrmAutoChildVariety;
-else widget_variety = UilMrmWidgetVariety;
-
-/*
-* Each real widget needs a name. Automatic children just get an
-* empty string since the name is stored in the compression tables.
-* For real widgets, we use the user provided name
-* if there is one; otherwise widgetfile#-line#-col#
-* For example, widget-1-341-111 was defined in file=1, line=341
-* and column=11
-*/
-if (widget_variety == UilMrmAutoChildVariety)
- widget_name = "";
-else if (widget_entry->obj_header.az_name == NULL)
- {
- sprintf(buffer, "widget-%d-%d-%d",
- widget_entry->header.az_src_rec->b_file_number,
- widget_entry->header.az_src_rec->w_line_number,
- widget_entry->header.b_src_pos);
- widget_name = buffer;
- }
-else
- widget_name = widget_entry->obj_header.az_name->c_text;
-
-access_code = URMaPublic;
-if (widget_entry->obj_header.b_flags & sym_m_private)
- access_code = URMaPrivate;
-
-urm_status = UrmCWRInit (out_az_context, widget_name, access_code, FALSE);
-if( urm_status != MrmSUCCESS)
- issue_urm_error( "initializing context" );
-
- /*
- ** Set the class of the widget.
- */
-
- widget_class_name = NULL;
-
- arg_count = 0;
- related_arg_count = 0;
- subtree_control = NULL;
-
- /*
- ** Special processing 1: User defined widgets have the class as
- ** creation routine
- */
- if ( widget_entry->header.b_type == uil_sym_user_defined_object )
- {
- widget_class_name =
- widget_entry->az_create_proc->az_proc_def->obj_header.az_name->c_text;
- }
-
- /*
- ** Special processing 2. Widgets which map their (single) control to
- ** a (subtree) resource. This handles the convention (originally invented
- ** for the pulldown menu which is the child of a cascade button) that
- ** subtrees which must be instantiated to serve as a resource value are
- ** treated as children rather than as widget references. Multiple
- ** children issue a diagnostic.
- */
- subtree_code = uil_urm_subtree_resource[widget_entry->header.b_type];
- if ( subtree_code != 0 )
- {
- int count;
-
- list_entry = widget_entry->az_controls;
- count = 0;
- extract_subtree_control (list_entry, &subtree_control, &count);
- switch ( count )
- {
- case 0:
- break;
- case 1:
- arg_count += 1;
- break;
- default:
- arg_count += 1;
- diag_issue_diagnostic
- (d_single_control,
- _sar_source_pos2(subtree_control),
- diag_object_text(widget_entry->header.b_type));
- break;
- }
- }
-
-
- /*
- * Set the class in the widget record
- */
- if (widget_variety == UilMrmAutoChildVariety)
- widget_class = uil_child_compr[widget_entry->header.b_type];
- else widget_class = uil_widget_compr[widget_entry->header.b_type];
-
-
- /*
- * User defined widgets don't get compressed.
- */
-
- if (widget_entry->header.b_type == uil_sym_user_defined_object)
- widget_class = MrmwcUnknown;
-
- urm_status =
- UrmCWRSetClass( out_az_context,
- widget_class,
- widget_class_name,
- widget_variety );
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "setting class" );
-
- /*
- ** Check the callback list for the creation reason and process it.
- ** Do this first since it affects arg_count.
- */
- list_entry = widget_entry->az_callbacks;
- if (list_entry != NULL)
- {
- sym_callback_entry_type *callback_entry;
-
- arg_count += compute_list_size (list_entry, sym_k_callback_entry);
- callback_entry = NULL;
- extract_create_callback (list_entry, &callback_entry);
- if ( callback_entry != NULL )
- {
- arglist_index = 0;
- emit_callback (callback_entry, &arglist_index, TRUE);
- arg_count -= 1;
- }
- }
-
- /*
- ** Output the list of arguments. Arguments are either callbacks
- ** or arguments.
- */
-
- if (widget_entry->az_arguments != NULL)
- arg_count += compute_list_size
- (widget_entry->az_arguments, sym_k_argument_entry);
-
- if (arg_count > 0)
- {
- urm_status =
- UrmCWRInitArglist( out_az_context, arg_count );
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "initializing arglist" );
- arglist_index = arg_count - 1;
-
- /*
- ** Process the callbacks, then the arguments
- */
- process_all_callbacks
- (widget_entry->az_callbacks, &arglist_index);
- process_all_arguments
- (widget_entry->az_arguments, &arglist_index, &related_arg_count);
-
- /*
- ** Process a control which is to be entered as a subtree resource. Mark
- ** the control so it won't be processed again.
- */
- if (subtree_control != NULL)
- {
- MrmCode widget_access;
- MrmCode widget_form;
- char *widget_index;
- MrmResource_id widget_id;
-
- urm_status =
- UrmCWRSetCompressedArgTag
- (out_az_context, arglist_index,
- uil_arg_compr[subtree_code], 0);
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "setting compressed arg" );
-
- widget_form =
- ref_control( subtree_control,
- &widget_access, &widget_index, &widget_id );
- urm_status =
- UrmCWRSetArgResourceRef
- (out_az_context,
- arglist_index,
- widget_access,
- URMgWidget,
- RGMwrTypeSubTree,
- widget_form,
- widget_index,
- widget_id );
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "setting arg reference" );
- subtree_control->header.b_tag = sym_k_error_entry;
-
- arglist_index++;
-
- }
- }
-
- /*
- ** Process controls
- */
-
- list_entry = widget_entry->az_controls;
-
- if (list_entry != NULL)
- {
- int widget_index;
-
- /*
- ** The list of controls is in reverse order. To correct for
- ** this, controls are placed in the list from bottom to top.
- ** Thus widget_index represent the last slot in the list used.
- */
-
- widget_index = compute_list_size (list_entry, sym_k_control_entry);
- if (widget_index > 0)
- {
- urm_status =
- UrmCWRInitChildren (out_az_context, widget_index );
- if ( urm_status != MrmSUCCESS)
- issue_urm_error( "initializing children" );
- process_all_controls (list_entry, &widget_index);
- }
- }
-
- /*
- ** If we have any related arguments, report the number.
- */
-
- if (related_arg_count > 0)
- UrmCWRSetExtraArgs( out_az_context, related_arg_count );
-
- /*
- ** Emit the widget record to UID file
- ** All widgets are indexed as long as they are named. This is so
- ** they can be included in module interface structure.
- */
-
- if (widget_entry->obj_header.az_name == NULL)
- {
- if (widget_entry->resource_id == 0 )
- {
- urm_status =
- UrmIdbGetResourceId
- ( out_az_idbfile_id, &(widget_entry->resource_id) );
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "obtaining resource id" );
- }
-
- urm_status =
- UrmPutRIDWidget
- (out_az_idbfile_id,
- widget_entry->resource_id,
- out_az_context );
- }
- else
- urm_status =
- UrmPutIndexedWidget
- (out_az_idbfile_id,
- widget_name,
- out_az_context );
-
- if( urm_status != MrmSUCCESS)
- {
- if (urm_status == MrmEOF)
- diag_issue_diagnostic ( d_uid_write, diag_k_no_source,
- diag_k_no_column, Uil_current_file );
- else
- issue_urm_error( "emitting widget" );
- }
-
- if (Uil_cmd_z_command.v_show_machine_code)
- {
- save_widget_machine_code (widget_entry, out_az_context);
- }
-
- widget_entry->output_state = sym_k_emitted;
- }
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine extracts the controlled widget (top-level) from
-** a controls list for subtree resources (those whose subtree must
-** be instantiated as part of parent creation, but which are
-** implemented as resources, not children). It returns the count of
-** the number of such entries found, and a pointer to the last one
-** encountered.
-**
-** FORMAL PARAMETERS:
-**
-** list_entry the list to be (recursively) searched
-** menu_entry to return a ponter to the pulldown menu
-** count counts the number of entries found
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void extract_subtree_control (list_entry, menu_entry, count)
- sym_list_entry_type *list_entry;
- sym_control_entry_type **menu_entry;
- int *count;
-
-{
-
-/*
- * Local variables
- */
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-sym_control_entry_type *control_entry;
-
-
-/*
- * Process the list elements, recursing on nested lists. Ignore error entries.
- */
-if ( list_entry == NULL ) return;
-for (list_member=(sym_obj_entry_type *)list_entry->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry = (sym_nested_list_entry_type *) list_member;
- extract_subtree_control
- (nested_list_entry->az_list, menu_entry, count);
- break;
- case sym_k_control_entry:
- control_entry = (sym_control_entry_type *) list_member;
- *count += 1;
- *menu_entry = control_entry;
-
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine searches a callbacks list (and any nested lists)
-** for the create callback.
-**
-** FORMAL PARAMETERS:
-**
-** list_entry the list to be (recursively) searched
-** create_entry to return a pointer to the create entry
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void extract_create_callback (list_entry, create_entry)
- sym_list_entry_type *list_entry;
- sym_callback_entry_type **create_entry;
-
-{
-
-/*
- * Local variables
- */
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-sym_callback_entry_type *callback_entry;
-sym_value_entry_type *value_entry;
-key_keytable_entry_type *key_entry;
-
-
-/*
- * Process the list elements, recursing on nested lists. Ignore error entries.
- */
-if ( list_entry == NULL ) return;
-for (list_member=(sym_obj_entry_type *)list_entry->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry = (sym_nested_list_entry_type *) list_member;
- extract_create_callback
- (nested_list_entry->az_list, create_entry);
- break;
- case sym_k_callback_entry:
- callback_entry = (sym_callback_entry_type *) list_member;
- value_entry = callback_entry->az_call_reason_name;
- if (value_entry->obj_header.b_flags & sym_m_builtin)
- {
- key_entry =
- (key_keytable_entry_type *)value_entry->value.l_integer;
- if ( strcmp(uil_reason_toolkit_names[key_entry->b_subclass],
- MrmNcreateCallback) == 0 )
- {
- *create_entry = callback_entry;
- return;
- }
- }
- break;
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine processes all valid callbacks in an callbacks list,
-** recursing on nested lists. Each valid callback is emitted to
-** the output.
-**
-** FORMAL PARAMETERS:
-**
-** list_entry the list to be (recursively) processed
-** arglist_index the modifiable index of arguments in the
-** output argslist.
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void process_all_callbacks (list_entry, arglist_index)
- sym_list_entry_type *list_entry;
- int *arglist_index;
-
-{
-
-/*
- * Local variables
- */
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-sym_callback_entry_type *callback_entry;
-
-
-/*
- * Process the list elements, recursing on nested lists. Ignore error entries.
- */
-if ( list_entry == NULL ) return;
-for (list_member=(sym_obj_entry_type *)list_entry->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry = (sym_nested_list_entry_type *) list_member;
- process_all_callbacks (nested_list_entry->az_list, arglist_index);
- break;
- case sym_k_callback_entry:
- callback_entry = (sym_callback_entry_type *) list_member;
- emit_callback (callback_entry, arglist_index, FALSE);
- break;
- case sym_k_error_entry:
- break;
- default:
- _assert (FALSE, "unknown entry in callback list");
- break;
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine processes all valid arguments in an arguments list,
-** recursing on nested lists. Each valid argument is emitted to
-** the output.
-**
-** FORMAL PARAMETERS:
-**
-** list_entry the list to be (recursively) processed
-** arglist_index the modifiable index of arguments in the
-** output argslist.
-** related_count the modifiable count of related args
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void process_all_arguments (list_entry, arglist_index, related_count)
- sym_list_entry_type *list_entry;
- int *arglist_index;
- int *related_count;
-
-{
-
-/*
- * Local variables
- */
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-sym_argument_entry_type *argument_entry;
-
-
-/*
- * Process the list elements, recursing on nested lists. Ignore error entries.
- */
-if ( list_entry == NULL ) return;
-for (list_member=(sym_obj_entry_type *)list_entry->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry = (sym_nested_list_entry_type *) list_member;
- process_all_arguments
- (nested_list_entry->az_list, arglist_index, related_count);
- break;
- case sym_k_argument_entry:
- argument_entry = (sym_argument_entry_type *) list_member;
- emit_argument (argument_entry, *arglist_index, related_count);
- *arglist_index -= 1;
- break;
- case sym_k_error_entry:
- break;
- default:
- _assert (FALSE, "unknown entry in argument list");
- break;
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine processes all valid controls in an controls list,
-** recursing on nested lists. Each valid control is emitted to
-** the output.
-**
-** FORMAL PARAMETERS:
-**
-** list_entry the list to be (recursively) processed
-** widget_index the modifiable index of children
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void process_all_controls (list_entry, widget_index)
- sym_list_entry_type *list_entry;
- int *widget_index;
-
-{
-
-/*
- * Local variables
- */
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-sym_control_entry_type *control_entry;
-
-
-/*
- * Process the list elements, recursing on nested lists. Ignore error entries.
- */
-if ( list_entry == NULL ) return;
-for (list_member=(sym_obj_entry_type *)list_entry->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry = (sym_nested_list_entry_type *) list_member;
- process_all_controls (nested_list_entry->az_list, widget_index);
- break;
- case sym_k_control_entry:
- control_entry = (sym_control_entry_type *) list_member;
- *widget_index -= 1;
- emit_control (control_entry, *widget_index);
- break;
- case sym_k_error_entry:
- break;
- default:
- _assert (FALSE, "unknown entry in control list");
- break;
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds the URM record for a value.
-**
-** FORMAL PARAMETERS:
-**
-** value_entry symbol table pointer for a value
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** write a value record to UID file
-**
-**--
-**/
-
-void out_emit_value( value_entry )
-
-sym_value_entry_type *value_entry;
-
-{
- MrmCode access;
- int value_size;
- MrmType value_type;
- int value_count;
- char *buffer;
- status urm_status;
- XmString tmp_str;
-
- _assert( value_entry->header.b_tag == sym_k_value_entry,
- "object to be emitted is not a value" );
-
- _assert( (value_entry->obj_header.b_flags & (sym_m_exported | sym_m_private)),
- "value being emitted is not exported or private" );
-
- access = URMaPublic;
-
- if (value_entry->obj_header.b_flags & sym_m_private)
- {
- if (value_entry->resource_id == 0 )
- {
- urm_status =
- UrmIdbGetResourceId
- ( out_az_idbfile_id, &(value_entry->resource_id) );
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "obtaining resource id" );
- }
-
- access = URMaPrivate;
- }
-
- /*
- ** Case on the type of literal.
- */
-
- value_type = Urm_code_from_uil_type( value_entry->b_type );
- switch (value_entry->b_type)
- {
- case sym_k_bool_value:
- case sym_k_integer_value:
- _assert(access == URMaPublic,
- "private value should not get resource ids");
- value_size = sizeof(long);
- break;
-
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- value_size = sizeof(RGMUnitsInteger);
- break;
-
- case sym_k_float_value:
- _assert(access == URMaPublic,
- "private floats should not get resource ids");
- value_size = sizeof (double);
- break;
-
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- value_size = sizeof(RGMUnitsFloat);
- break;
-
- case sym_k_single_float_value:
- _assert(access == URMaPublic,
- "private single floats should not get resource ids");
- value_size = sizeof(float);
- break;
-
- case sym_k_compound_string_value:
- tmp_str = value_entry->value.xms_value;
- value_size =
- XmCvtXmStringToByteStream(tmp_str,
- (unsigned char **)&(value_entry->value.c_value));
- XmStringFree(tmp_str);
- break;
-
- case sym_k_font_value:
- case sym_k_fontset_value:
- {
- /*
- * Size is FontItem plus size of charset name string and
- * size of font name string.
- */
- value_size = sizeof(RGMFontItem)
- + strlen(sem_charset_name(value_entry->b_charset,
- value_entry->az_charset_value))
- + 1 + strlen(value_entry->value.c_value) + 1;
- break;
- }
- case sym_k_color_value:
- /* null on end of color name accounted for in RGMColorDesc */
- value_size = sizeof( RGMColorDesc ) + value_entry->w_length;
- break;
-
- case sym_k_rgb_value:
- {
- sym_value_entry_type *value_segment;
-
- value_size = sizeof( RGMIntegerVector );
- value_count = 0;
- for (value_segment = value_entry->az_first_table_value;
- value_segment != NULL;
- value_segment = value_segment->az_next_table_value)
- {
- value_size += sizeof(long);
- value_count++;
- }
- break;
- }
-
- case sym_k_color_table_value:
- value_size = compute_color_table_size( value_entry );
- break;
-
- case sym_k_icon_value:
- value_size = compute_icon_size( value_entry );
- break;
-
- case sym_k_char_8_value:
- case sym_k_reason_value:
- case sym_k_argument_value:
- case sym_k_class_rec_name_value:
- case sym_k_xbitmapfile_value:
- case sym_k_keysym_value:
- case sym_k_localized_string_value:
- /* BEGIN OSF Fix CR 4859 */
-/* END OSF Fix CR 4859 */
- value_size = value_entry->w_length + 1; /* +1 for the null */
- break;
-
-/* BEGIN OSF Fix CR 4859 */
- case sym_k_wchar_string_value:
- value_size = sizeof(RGMWCharEntry) +
- value_entry->az_first_table_value->w_length;
- break;
-/* END OSF Fix CR 4859 */
- case sym_k_identifier_value:
- value_size = value_entry->w_length; /* includes the null */
- break;
-
- case sym_k_string_table_value:
- {
- sym_value_entry_type *value_segment;
-
- /* value_size accounts for header and null at end of the index */
- value_size = sizeof( RGMTextVector );
- value_count = 0;
-
- /*
- ** Determine the size of the string table by adding together
- ** the lengths of component strings. Before the string is a
- ** table of words. The first word is the number of component
- ** string. Next comes the word offsets of each of the strings
- ** from the start of the buffer.
- */
- for (value_segment=value_entry->az_first_table_value;
- value_segment != NULL;
- value_segment = value_segment->az_next_table_value)
- {
- value_count++;
-
- value_size +=
- XmCvtXmStringToByteStream(value_segment->value.xms_value, NULL) +
- sizeof( RGMTextEntry );
- }
- break;
- }
-
-
- case sym_k_asciz_table_value:
- {
- sym_value_entry_type *value_segment;
-
- /* value_size accounts for header and null at end of the index */
- value_size = sizeof( RGMTextVector );
- value_count = 0;
-
- /*
- ** Determine the size of the string table by adding together
- ** the lengths of component strings. Before the string is a
- ** table of words. The first word is the number of component
- ** string. Next comes the word offsets of each of the strings
- ** from the start of the buffer.
- */
-
- for (value_segment=value_entry->az_first_table_value;
- value_segment != NULL;
- value_segment = value_segment->az_next_table_value)
- {
- value_count++;
- value_size +=
- value_segment->w_length + sizeof(RGMTextEntry) + 1;
- }
- break;
- }
-
- case sym_k_integer_table_value:
- {
- sym_value_entry_type *value_segment;
-
- /*
- ** The size needed for the vector is the size of the header
- ** information followed by the the list of integers. Add in
- ** the header size here.
- */
- value_size = sizeof( RGMIntegerVector );
- value_count = 0;
-
- /*
- ** Determine the size of the integer table by adding together
- ** the lengths of component integers to the header.
- */
-
- for (value_segment = value_entry->az_first_table_value;
- value_segment != NULL;
- value_segment = value_segment->az_next_table_value)
- {
- value_size += sizeof(long);
- value_count++;
- }
- break;
- }
-
-
- case sym_k_font_table_value:
- {
- sym_value_entry_type *font_value;
-
- /*
- * Size is size of basic table, plus strings for all FontItems.
- * We allocate one fewer FontItems than specified in the structure
- * definition.
- */
- /* value_size accounts for header and null at end of the index */
- value_size = sizeof(RGMFontList) - sizeof(RGMFontItem);
- value_count = 0;
-
- /*
- ** Determine the size of the font list by adding together
- ** the lengths of component fonts. Each component is a FontItem
- ** in the list, plus space for the charset name and font name.
- */
- for (font_value = value_entry->az_first_table_value;
- font_value != NULL;
- font_value = font_value->az_next_table_value)
- {
- /* Fix for CR 5266 Part 2a -- Pull az_charset_value off of
- * font_value, rather than value_entry.
- */
- value_count += 1;
- value_size += sizeof(RGMFontItem)
- + strlen(sem_charset_name(font_value->b_charset,
- font_value->az_charset_value))
- + 1 + strlen(font_value->value.c_value) + 1;
- }
- break;
- }
-
- case sym_k_trans_table_value:
- {
- sym_value_entry_type *value_segment;
-
- value_size = 0;
-
- /*
- ** Determine the length of the translation table by adding
- ** together the length of the component strings.
- */
- for (value_segment = value_entry->az_first_table_value;
- value_segment != NULL;
- value_segment = value_segment->az_next_table_value)
- value_size += value_segment->w_length + 1;
- break;
- }
-
- default:
- _assert( FALSE, "unexpected value type" );
- }
-
- /*
- ** Check that the context is large enough to hold the value
- */
-
- if ((int)(UrmRCSize( out_az_context ) ) < value_size)
- {
- if( MrmSUCCESS !=
- UrmResizeResourceContext( out_az_context, value_size ))
- issue_urm_error( "allocating context" );
- urm_status = UrmResizeResourceContext( out_az_context, value_size );
- if ( urm_status != MrmSUCCESS)
- {
- if (urm_status == MrmTOO_MANY)
- {
- diag_issue_diagnostic
- ( d_value_too_large,
- (src_source_record_type *)value_entry->header.az_src_rec,
- diag_k_no_column,
- value_entry->obj_header.az_name->c_text );
- }
- else
- issue_urm_error( "allocating context" );
- }
- }
-
-
- /*
- ** Move the literal to the context.
- */
-
- UrmRCSetGroup( out_az_context, URMgLiteral );
- UrmRCSetType( out_az_context, value_type );
- UrmRCSetAccess( out_az_context, access );
- UrmRCSetLock( out_az_context, FALSE );
- UrmRCSetSize( out_az_context, value_size );
-
- buffer = (char *) UrmRCBuffer( out_az_context );
-
- bzero( buffer, value_size );
-
- switch (value_entry->b_type)
- {
- case sym_k_bool_value:
- case sym_k_integer_value:
- case sym_k_float_value:
- case sym_k_reason_value:
- case sym_k_argument_value:
- _move( buffer, &value_entry->value.l_integer, value_size );
- break;
-
- case sym_k_single_float_value:
- _move( buffer, &value_entry->value.single_float, value_size);
- break;
-
- case sym_k_char_8_value:
- case sym_k_localized_string_value:
- case sym_k_identifier_value:
- case sym_k_class_rec_name_value:
- case sym_k_xbitmapfile_value:
- case sym_k_keysym_value:
- case sym_k_compound_string_value:
- _move( buffer, value_entry->value.c_value, value_size );
- break;
-
-/* BEGIN OSF Fix CR 4859 */
- case sym_k_wchar_string_value:
- {
- RGMWCharEntryPtr wcharentry;
-
- wcharentry = (RGMWCharEntryPtr)buffer;
-
- wcharentry->wchar_item.count = value_size;
-
- _move(wcharentry->wchar_item.bytes,
- value_entry->az_first_table_value->value.c_value, value_size);
- break;
- }
-/* END OSF Fix CR 4859 */
-
- case sym_k_font_value:
- case sym_k_fontset_value:
- {
- RGMFontItemPtr fontitem;
- MrmOffset textoffs;
- char *textptr;
- char *charset_name;
- int text_len;
-
- fontitem = (RGMFontItemPtr) buffer;
- textoffs = (MrmOffset) sizeof(RGMFontItem);
- textptr = (char *)fontitem+textoffs;
-
- charset_name = sem_charset_name (value_entry->b_charset,
- value_entry->az_charset_value);
- text_len = strlen(charset_name) + 1;
-
- fontitem->type = Urm_code_from_uil_type(value_entry->b_type);
- fontitem->cset.cs_offs = textoffs;
- strcpy (textptr, charset_name);
- textoffs += text_len;
- textptr += text_len;
- fontitem->font.font_offs = textoffs;
- strcpy (textptr, value_entry->value.c_value);
-
- break;
- }
-
- case sym_k_color_value:
- {
- RGMColorDesc *color_buffer;
-
- color_buffer = (RGMColorDesc *)buffer;
-
- switch (value_entry->b_arg_type)
- {
- case sym_k_unspecified_color:
- color_buffer->mono_state = URMColorMonochromeUnspecified;
- break;
- case sym_k_foreground_color:
- color_buffer->mono_state = URMColorMonochromeForeground;
- break;
- case sym_k_background_color:
- color_buffer->mono_state = URMColorMonochromeBackground;
- break;
- }
-
- color_buffer->desc_type = URMColorDescTypeName;
-
- _move( color_buffer->desc.name,
- value_entry->value.c_value,
- value_entry->w_length + 1 );
-
- break;
- }
-
- case sym_k_rgb_value:
- {
- sym_value_entry_type *value_segment;
- RGMColorDesc *color_buffer;
- int color_vector[3];
- int index;
-
- color_buffer = (RGMColorDesc *)buffer;
- index = value_count;
-
- index--;
- for (value_segment=value_entry->az_first_table_value;
- value_segment != NULL;
- value_segment = value_segment->az_next_table_value)
- {
- color_vector[index] = (long) value_segment->value.l_integer;
- index--;
- }
-
- color_buffer->desc_type = URMColorDescTypeRGB;
- color_buffer->desc.rgb.red = color_vector[0];
- color_buffer->desc.rgb.green = color_vector[1];
- color_buffer->desc.rgb.blue = color_vector[2];
- color_buffer->mono_state = URMColorMonochromeUnspecified;
-
- break;
- }
-
-
- case sym_k_color_table_value:
- create_color_table( value_entry, buffer );
- break;
-
- case sym_k_icon_value:
- create_icon( value_entry, buffer );
- break;
-
- case sym_k_string_table_value:
- {
- sym_value_entry_type *value_segment;
- int text_offset;
- int index;
- int segment_size;
- RGMTextVector *string_vector;
-
- /*
- ** Value entries are reversed. Need to fill the buffer
- ** from the end to front.
- */
- text_offset = value_size;
- string_vector = (RGMTextVector *)buffer;
- string_vector->validation = URMTextVectorValid;
- string_vector->count = value_count;
- index = value_count;
- string_vector->item[index].pointer = NULL;
-
- for (value_segment=value_entry->az_first_table_value;
- value_segment != NULL;
- value_segment = value_segment->az_next_table_value)
- {
- tmp_str = value_segment->value.xms_value;
- segment_size =
- XmCvtXmStringToByteStream(tmp_str,
- (unsigned char **)&(value_segment->value.c_value));
- XmStringFree(tmp_str);
- text_offset -= segment_size;
- _move(&(buffer[text_offset]),
- value_segment->value.c_value, segment_size);
- index--;
- string_vector->item[index].text_item.offset = text_offset;
- string_vector->item[index].text_item.rep_type =
- MrmRtypeCString;
- }
- break;
- }
-
- case sym_k_asciz_table_value:
- {
- sym_value_entry_type *value_segment;
- int text_offset;
- int index;
- int segment_size;
- RGMTextVector *string_vector;
-
- /*
- ** Value entries are reversed. Need to fill the buffer
- ** from the end to front.
- */
- text_offset = value_size;
- string_vector = (RGMTextVector *)buffer;
- string_vector->validation = URMTextVectorValid;
- string_vector->count = value_count;
- index = value_count;
- string_vector->item[index].pointer = NULL;
-
- for (value_segment=value_entry->az_first_table_value;
- value_segment != NULL;
- value_segment = value_segment->az_next_table_value)
- {
- segment_size = value_segment->w_length + 1;
- buffer[text_offset-1] = '\0';
- text_offset -= segment_size;
- _move( &(buffer[text_offset]),
- value_segment->value.c_value, segment_size - 1);
- index--;
- string_vector->item[index].text_item.offset = text_offset;
- string_vector->item[index].text_item.rep_type = MrmRtypeChar8;
- }
- break;
- }
-
- case sym_k_integer_table_value:
- {
- sym_value_entry_type *value_segment;
- int index;
- RGMIntegerVector *integer_vector;
-
- /*
- ** Fill in the header information
- */
- integer_vector = (RGMIntegerVector *)buffer;
- integer_vector->validation = URMIntegerVectorValid;
- integer_vector->count = value_count;
-
- /*
- ** Value entries are reversed. Need to fill the buffer
- ** from the end to front.
- */
- index = value_count - 1;
- for (value_segment=value_entry->az_first_table_value;
- value_segment != NULL;
- value_segment = value_segment->az_next_table_value)
- {
- integer_vector->item [index] =
- (long) value_segment->value.l_integer;
- index--;
- }
- break;
- }
-
- case sym_k_font_table_value:
- {
- RGMFontListPtr fontlist;
- RGMFontItemPtr fontitem;
- sym_value_entry_type *font_value;
- int textoffs;
- char *textptr;
- int index;
- char *charset_name;
- int text_len;
-
- /*
- ** Font items are in correct order.
- */
- fontlist = (RGMFontList *)buffer;
- fontlist->validation = URMFontListValid;
- fontlist->count = value_count;
-
- /*
- ** textoffs need to be the offset just beyond the last
- ** FontItem in the list. One FontItem is already allocated,
- ** so account for it in sizing.
- */
- textoffs = sizeof (RGMFontList) +
- sizeof(RGMFontItem)*(value_count-1);
- textptr = (char *)fontlist+textoffs;
-
- for (index = 0,
- font_value = value_entry->az_first_table_value;
- font_value != NULL;
- index++, font_value = font_value->az_next_table_value)
- {
- fontitem = &fontlist->item[index];
- /*
- * Fix for CR 5266 Part 2b -- Pull az_charset_value off of
- * font_value, rather than value_entry.
- */
- charset_name =
- sem_charset_name (font_value->b_charset,
- font_value->az_charset_value);
-
- fontitem->type = Urm_code_from_uil_type(font_value->b_type);
- fontitem->cset.cs_offs = textoffs;
- strcpy (textptr, charset_name);
- text_len = strlen(charset_name) + 1;
- textoffs += text_len;
- textptr += text_len;
- fontitem->font.font_offs = textoffs;
- strcpy (textptr, font_value->value.c_value);
- text_len = strlen(font_value->value.c_value) + 1;
- textoffs += text_len;
- textptr += text_len;
- }
- break;
- }
-
- case sym_k_trans_table_value:
- {
- sym_value_entry_type *value_segment;
- int offset;
- int segment_size;
-
- /*
- ** Value entries are reversed. Need to fill the buffer
- ** from the end to front.
- */
-
- offset = value_size;
- for (value_segment = value_entry->az_first_table_value;
- value_segment != NULL;
- value_segment = value_segment->az_next_table_value)
- {
- buffer[offset - 1] = '\n';
- segment_size = value_segment->w_length + 1;
- offset -= segment_size;
- _move( &(buffer[offset]),
- value_segment->value.c_value, segment_size-1 );
- }
- buffer[value_size - 1] = 0;
- break;
- }
-
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- {
- RGMUnitsIntegerPtr uiptr;
-
- uiptr = (RGMUnitsIntegerPtr) buffer;
- uiptr->value = value_entry->value.l_integer;
- uiptr->units = value_entry->b_arg_type;
- break;
- }
-
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- {
- RGMUnitsFloatPtr ufptr;
-
- ufptr = (RGMUnitsFloatPtr) buffer;
- *((double *)(&ufptr->value[0])) = value_entry->value.d_real;
- ufptr->units = value_entry->b_arg_type;
- break;
- }
- }
-
- /*
- ** Output the literal
- */
- if (access == URMaPublic)
- urm_status = UrmPutIndexedLiteral
- (out_az_idbfile_id,
- value_entry->obj_header.az_name->c_text,
- out_az_context);
- else
- urm_status = UrmPutRIDLiteral
- (out_az_idbfile_id, value_entry->resource_id, out_az_context);
-
- if( urm_status != MrmSUCCESS)
- {
- if (urm_status == MrmEOF)
- diag_issue_diagnostic ( d_uid_write, diag_k_no_source,
- diag_k_no_column, Uil_current_file );
- else
- issue_urm_error( "emitting literal" );
- }
-
- if (Uil_cmd_z_command.v_show_machine_code)
- save_value_machine_code (value_entry, out_az_context);
-
- value_entry->output_state = sym_k_emitted;
-
- }
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds the callback argument for a widget record
-**
-** FORMAL PARAMETERS:
-**
-** callback_entry symbol table pointer for the callback
-** arglist_index index in arglist to place callback
-** (this is an in/out argument)
-** emit_create true: emit a create reason
-** false: skip create reason
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** callback data is added to out_az_context
-**
-**--
-**/
-
-void emit_callback
-
- (sym_callback_entry_type *callback_entry,
- int *arglist_index,
- boolean emit_create)
-
-{
-sym_value_entry_type *reason_entry;
-sym_proc_ref_entry_type *proc_ref_entry_next;
-int proc_ref_index;
-int proc_count;
-boolean qcreate = FALSE;
-MrmOffset callback_offset;
-status urm_status;
-
-/*
- * Count number of entries in callback list
- */
-if ( callback_entry->az_call_proc_ref != 0 )
- proc_count = 1;
-else
- proc_count = count_proc (callback_entry->az_call_proc_ref_list, 0);
-
-/*
-** Reasons can take several forms:
-** 1) create reason: value is builtin - keyword Urm value is "created"
-** this need special handling
-** 2) builtin reasons: value is builtin - keyword Urm value as URM
-** compressed equivalent argument
-** 3) non-builtin private: value is not builtin but private -
-** use an uncompressed argument tag
-** 4) non-builtin public: value is not builtin and public -
-** not supported yet
-*/
-
-reason_entry = callback_entry->az_call_reason_name;
-if ( reason_entry->obj_header.b_flags & sym_m_builtin )
- {
- key_keytable_entry_type *key_entry;
-
- key_entry = (key_keytable_entry_type *) reason_entry->value.l_integer;
- qcreate =
- (strcmp(uil_reason_toolkit_names[key_entry->b_subclass],
- MrmNcreateCallback) == 0);
- if ( qcreate )
- {
- /*
- ** case 1: create reason - return if we are not to emit
- ** otherwise use special routine to describe
- */
- if ( !emit_create ) return;
- urm_status = UrmCWRSetCreationCallback
- (out_az_context,
- proc_count,
- &callback_offset);
- if( urm_status != MrmSUCCESS)
- {
- if (urm_status == MrmEOF)
- diag_issue_diagnostic ( d_uid_write, diag_k_no_source,
- diag_k_no_column, Uil_current_file );
- else
- issue_urm_error ("emitting creation callback");
- }
-
- }
- else
- {
- /*
- ** case 2: builtin case - use a compressed argument
- */
- urm_status = UrmCWRSetCompressedArgTag
- (out_az_context,
- *arglist_index,
- uil_reas_compr[key_entry->b_subclass],
- 0);
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "setting compressed arg" );
- }
- }
-else
- {
- /*
- ** Non private reasons and arguments are not supported
- */
- if ( reason_entry->obj_header.b_flags & (sym_m_imported|sym_m_exported) )
- {
- diag_issue_diagnostic
- (d_not_impl, diag_k_no_source, diag_k_no_column,
- "EXPORTED and IMPORTED arguments and reasons" );
- return;
- }
-
- /*
- ** case 3: private, non-builtin case - use an uncompressed argument
- */
- urm_status = UrmCWRSetUncompressedArgTag
- (out_az_context,
- *arglist_index,
- reason_entry->value.c_value);
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "setting uncompressed arg" );
- }
-
-/*
- * Create the callback value (this is not done for the create callback)
- */
-if ( ! qcreate )
- {
- urm_status = UrmCWRSetArgCallback
- (out_az_context, *arglist_index, proc_count, &callback_offset);
- if( urm_status != MrmSUCCESS)
- issue_urm_error ("setting callback arg");
- }
-
-/*
- * Create the callback procedures
- */
-if (callback_entry->az_call_proc_ref != 0)
- {
- proc_ref_index = 0;
- proc_ref_entry_next = callback_entry->az_call_proc_ref;
- }
-else
- {
- proc_ref_index = proc_count - 1;
- proc_ref_entry_next =
- (sym_proc_ref_entry_type *) callback_entry->
- az_call_proc_ref_list->obj_header.az_next;
- }
-emit_callback_procedures
- (proc_ref_entry_next, &proc_ref_index, callback_offset);
-*arglist_index = *arglist_index - 1;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function counts the number of procedures in a procedure list
-** including nested procedure lists.
-**
-** FORMAL PARAMETERS:
-**
-** proc_list list of procedures (and nested list entries)
-** count count of procedures encountered so far
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** count of procedures in procedure list
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-int count_proc(proc_list, count)
-sym_list_entry_type *proc_list;
-int count;
-
-{
- sym_obj_entry_type *proc_list_next;
-
- for (proc_list_next = (sym_obj_entry_type *)proc_list->obj_header.az_next;
- proc_list_next != 0;
- proc_list_next = (sym_obj_entry_type *)
- proc_list_next->obj_header.az_next)
- {
- switch (proc_list_next->header.b_tag)
- {
- case sym_k_nested_list_entry:
- count = count_proc(((sym_nested_list_entry_type *)
- proc_list_next)->
- az_list,
- count);
- break;
- case sym_k_proc_ref_entry:
- count++;
- break;
- default:
- _assert(FALSE, "unknown entry in procedures list");
- }
- }
- return (count);
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function output a procedure list referenced by a callback entry
-**
-** FORMAL PARAMETERS:
-**
-** proc_ref_entry_next next procedure reference entry
-** proc_ref_index index of procedure in procedure list (for Mrm)
-** callback_offset offset of callback (for Mrm)
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-/*
- * Fix for CR 4772 - Change the proc_ref_index entry from an integer to an
- * integer pointer to allow for proper construction of
- * internal callback arrays.
- */
-void emit_callback_procedures
-
- (sym_proc_ref_entry_type *proc_ref_entry_next,
- int *proc_ref_index,
- MrmOffset callback_offset)
-
-{
- sym_proc_def_entry_type *proc_def_entry;
- sym_value_entry_type *proc_arg_entry;
- MrmCode arg_access;
- MrmCode arg_form;
- char *arg_index;
- MrmResource_id arg_id;
- MrmCode arg_type, arg_group;
- long arg_value;
- sym_nested_list_entry_type *nested_proc_list_entry;
- sym_list_entry_type *proc_list_entry;
- status urm_status;
-
- for (
- ;
- proc_ref_entry_next != 0;
- proc_ref_entry_next =
- (sym_proc_ref_entry_type *) proc_ref_entry_next->
- obj_header.az_next)
-
- {
- switch (proc_ref_entry_next->header.b_tag)
- {
- case sym_k_nested_list_entry:
- nested_proc_list_entry = (sym_nested_list_entry_type *)
- proc_ref_entry_next;
- proc_list_entry = nested_proc_list_entry->az_list;
- emit_callback_procedures (( sym_proc_ref_entry_type *)proc_list_entry->obj_header.az_next,
- proc_ref_index,
- callback_offset);
- break;
- case sym_k_proc_ref_entry:
- proc_def_entry = proc_ref_entry_next->az_proc_def;
- proc_arg_entry = proc_ref_entry_next->az_arg_value;
-
- if (proc_arg_entry == NULL)
- {
- arg_type = MrmRtypeNull;
- arg_value = 0L;
- arg_form = URMrImmediate;
- }
- else
- {
- arg_form = ref_value
- ( proc_arg_entry,
- &arg_type, &arg_value, &arg_access, &arg_index,
- &arg_id, &arg_group );
- }
-
- if (arg_form == URMrImmediate)
- urm_status =
- UrmCWRSetCallbackItem
- ( out_az_context, callback_offset, *proc_ref_index,
- proc_def_entry->obj_header.az_name->c_text,
- arg_type,
- arg_value );
- else
- urm_status =
- UrmCWRSetCallbackItemRes
- ( out_az_context, callback_offset, *proc_ref_index,
- proc_def_entry->obj_header.az_name->c_text,
- arg_group,
- arg_access,
- arg_type,
- arg_form,
- arg_index,
- arg_id );
-
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "setting callback proc" );
- *proc_ref_index = *proc_ref_index - 1;
- break;
-
- case sym_k_error_entry:
- break;
- default:
- _assert (FALSE, "unknown entry in procedures list");
- break;
- }
- }
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds an argument for a widget record
-**
-** FORMAL PARAMETERS:
-**
-** argument_entry symbol table pointer for the argument
-** arglist_index index in arglist to place argument
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** argument data is added to out_az_context
-**
-**--
-**/
-
-void emit_argument( argument_entry, arglist_index, related_arg_count )
-
-sym_argument_entry_type *argument_entry;
-int arglist_index;
-int *related_arg_count;
-
-{
-sym_value_entry_type *arg_name_entry;
-sym_value_entry_type *arg_value_entry;
-MrmCode arg_access;
-MrmCode arg_form;
-char *arg_index;
-MrmResource_id arg_id;
-MrmCode arg_type, arg_group;
-long arg_value;
-unsigned char expected_type;
-status urm_status;
-
-
-/*
- * For an argument, we must:
- * 1) create the argument
- * 2) create the argument value
- */
-
-arg_name_entry = argument_entry->az_arg_name;
-if (arg_name_entry->obj_header.b_flags & sym_m_builtin)
- {
- key_keytable_entry_type *key_entry;
-
- key_entry = (key_keytable_entry_type *)arg_name_entry->value.l_integer;
-
- urm_status = UrmCWRSetCompressedArgTag
- (out_az_context,
- arglist_index,
- uil_arg_compr[key_entry->b_subclass],
- uil_arg_compr[related_argument_table[key_entry->b_subclass]]);
- if ( related_argument_table[key_entry->b_subclass] != 0 )
- *related_arg_count += 1;
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "setting compressed arg" );
- }
-else
- {
- /*
- ** Non private reasons and arguments are not supported
- */
-
- if ( arg_name_entry->obj_header.b_flags & (sym_m_imported|sym_m_exported) )
- {
- diag_issue_diagnostic
- (d_not_impl, diag_k_no_source, diag_k_no_column,
- "EXPORTED and IMPORTED arguments and reasons" );
- return;
- }
-
- /*
- ** case 3: private, non-builtin case - use an uncompressed argument
- */
- urm_status = UrmCWRSetUncompressedArgTag
- (out_az_context,
- arglist_index,
- arg_name_entry->value.c_value);
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "setting uncompressed arg" );
- }
-
-/*
- * Acquire the argument parameters. If it is an immediate value, set it.
- * Else set it up as a literal or widget reference. For literal references,
- * the expected type must be set up in order to enable coercion in Mrm.
- */
-arg_value_entry = argument_entry->az_arg_value;
-arg_form = ref_value
- (arg_value_entry,
- &arg_type,
- &arg_value,
- &arg_access,
- &arg_index,
- &arg_id,
- &arg_group);
-if (arg_form == URMrImmediate)
- urm_status = UrmCWRSetArgValue
- (out_az_context,
- arglist_index,
- arg_type,
- arg_value );
-else
- {
- switch ( arg_group )
- {
- case URMgLiteral:
- if ( argument_entry->az_arg_name->obj_header.b_flags &
- sym_m_builtin )
- {
- key_keytable_entry_type * keytable_entry;
-
- keytable_entry = (key_keytable_entry_type *)
- argument_entry->az_arg_name->value.l_integer;
- _assert (keytable_entry->b_class == tkn_k_class_argument,
- "name is not an argument");
- expected_type =
- argument_type_table[keytable_entry->b_subclass];
- }
- else
- expected_type = argument_entry->az_arg_name->b_arg_type;
- urm_status = UrmCWRSetArgResourceRef
- (out_az_context,
- arglist_index,
- arg_access,
- arg_group,
- Urm_code_from_uil_type(expected_type),
- arg_form,
- arg_index,
- arg_id );
- break;
- case URMgWidget:
- urm_status = UrmCWRSetArgResourceRef
- (out_az_context,
- arglist_index,
- arg_access,
- arg_group,
- RGMwrTypeReference,
- arg_form,
- arg_index,
- arg_id );
- break;
- }
- }
-
-if( urm_status != MrmSUCCESS)
- issue_urm_error ("setting arg value");
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds a control for a widget record
-**
-** FORMAL PARAMETERS:
-**
-** control_entry symbol table pointer for the control
-** control_offset offset of object in the control list
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** control data is added to out_az_context
-**
-**--
-**/
-
-void emit_control( control_entry, control_offset )
-
-sym_control_entry_type *control_entry;
-int control_offset;
-
-{
- MrmCode access;
- MrmCode form;
- char *index;
- MrmResource_id id;
- status urm_status;
- sym_widget_entry_type *widget_entry;
- Boolean managed;
-
- /*
- ** 1) Process the object reference
- ** 2) set object as a child of current context
- */
-
- form = ref_control( control_entry, &access, &index, &id );
-
- /* Truly gross hack. Fix in WML before beta */
-#ifndef sym_k_XmRenderTable_object
-#define sym_k_XmRenderTable_object 0
-#endif
-#ifndef sym_k_XmRendition_object
-#define sym_k_XmRendition_object 0
-#endif
-#ifndef sym_k_XmTabList_object
-#define sym_k_XmTabList_object 0
-#endif
- widget_entry = control_entry->az_con_obj;
-
- while (widget_entry->obj_header.az_reference != NULL)
- widget_entry =
- (sym_widget_entry_type *)widget_entry->obj_header.az_reference;
-
- managed = ((widget_entry->header.b_type != sym_k_XmRenderTable_object) &&
- (widget_entry->header.b_type != sym_k_XmRendition_object) &&
- (widget_entry->header.b_type != sym_k_XmTabList_object) &&
- ((control_entry->obj_header.b_flags & sym_m_managed) != 0));
-
- /*
- ** Add the object as a child.
- */
-
- urm_status =
- UrmCWRSetChild
- ( out_az_context,
- control_offset,
- managed,
- access,
- form,
- index,
- id );
-
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "setting child" );
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function process a reference to a value.
-**
-** FORMAL PARAMETERS:
-**
-** arg_value_entry (in) value entry to process
-** arg_type (out) URM argument type
-** arg_value (out) argument value if immediate
-** arg_access (out) private or public
-** arg_index (out) index if value is an index
-** arg_id (out) resource id if value is a resource id
-** arg_group (out) URM group (widget or literal)
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** URMrIndex, URMrRID, URMrImmediate (class of value)
-** defines which of the output parameters have meaning
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-MrmCode ref_value(value_entry,
- arg_type, arg_value, arg_access, arg_index, arg_id, arg_group)
-
-sym_value_entry_type *value_entry;
-MrmCode *arg_type;
-long *arg_value;
-MrmCode *arg_access;
-char **arg_index;
-MrmResource_id *arg_id;
-MrmCode *arg_group;
-
-{
-
- status urm_status;
-
- *arg_value = 0L;
- *arg_index = NULL;
- *arg_id = 0;
- *arg_group = URMgLiteral;
-
- /* This value may actually be a widget reference, so check for this
- case first. */
-
- if (value_entry->header.b_tag == sym_k_widget_entry)
- {
-
- /* Set up a dummy control entry, and process the widget reference. */
-
- sym_control_entry_type control_entry;
- sym_widget_entry_type * widget_entry;
-
- widget_entry = (sym_widget_entry_type *)value_entry;
- control_entry.header.b_tag = sym_k_control_entry;
- control_entry.az_con_obj = widget_entry;
-
- *arg_group = URMgWidget;
- *arg_type = RGMwrTypeReference;
-
- return ref_control (&control_entry, arg_access, arg_index, arg_id);
- }
-
- *arg_type = Urm_code_from_uil_type( value_entry->b_type );
-
- if (value_entry->obj_header.b_flags & sym_m_private)
- {
- *arg_access = URMaPrivate;
-
- switch (value_entry->b_type)
- {
- case sym_k_bool_value:
- case sym_k_integer_value:
- *arg_value = value_entry->value.l_integer;
- return URMrImmediate;
-
- case sym_k_float_value:
- *arg_value = (long)(&(value_entry->value.d_real));
- return URMrImmediate;
-
- case sym_k_single_float_value:
- *arg_value = (long)(value_entry->value.single_float);
- return URMrImmediate;
-
- case sym_k_char_8_value:
- case sym_k_font_value:
- case sym_k_fontset_value:
- case sym_k_color_value:
- case sym_k_reason_value:
- case sym_k_argument_value:
- case sym_k_trans_table_value:
- case sym_k_asciz_table_value:
- case sym_k_integer_table_value:
- case sym_k_string_table_value:
- case sym_k_color_table_value:
- case sym_k_icon_value:
- case sym_k_font_table_value:
- case sym_k_compound_string_value:
- case sym_k_identifier_value:
- case sym_k_class_rec_name_value:
- case sym_k_xbitmapfile_value:
- case sym_k_keysym_value:
- case sym_k_rgb_value:
- case sym_k_wchar_string_value:
- case sym_k_localized_string_value:
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- if (value_entry->resource_id == 0 )
- {
- urm_status =
- UrmIdbGetResourceId
- (out_az_idbfile_id, &(value_entry->resource_id) );
- if ( urm_status != MrmSUCCESS )
- issue_urm_error( "obtaining resource id" );
- }
-
- if (value_entry->output_state == sym_k_not_processed)
- {
- value_entry->output_state = sym_k_queued;
- push((sym_entry_type *) value_entry );
- }
-
- *arg_id = value_entry->resource_id;
- return URMrRID;
-
- default:
- _assert( FALSE, "unexpected value type" );
- return URMrImmediate;
- }
-
- }
-
- /*
- ** Only Imported and Exported Values reach this point
- */
-
- *arg_access = URMaPublic;
- *arg_index = (char *)(value_entry->obj_header.az_name->c_text);
-
- if ((value_entry->obj_header.b_flags & sym_m_exported) &&
- (value_entry->output_state == sym_k_not_processed))
- {
- value_entry->output_state = sym_k_queued;
- push((sym_entry_type *) value_entry );
- }
-
- return URMrIndex;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function process a reference to a control (widget or gadget)
-**
-** FORMAL PARAMETERS:
-**
-** control_entry (in) control entry for widget reference
-** access (out) private or public
-** index (out) index if widget is an index
-** id (out) resource id if widget is a resource id
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** URMrIndex, URMrRID (class of control)
-** defines which of the output parameters have meaning
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-MrmCode ref_control(control_entry, access, index, id)
-
-sym_control_entry_type *control_entry;
-MrmCode *access;
-char **index;
-MrmResource_id *id;
-
-{
-
- sym_widget_entry_type *widget_entry;
- MrmCode form;
- status urm_status;
-
- _assert( control_entry->header.b_tag == sym_k_control_entry,
- "expecting a control entry" );
-
- /*
- ** For a control, we must:
- ** 1) determine if this is a definition or a reference
- ** 2) queue the widget to be created if it isn't yet
- ** 3) get a resource id for the control if unnamed
- */
-
- widget_entry = control_entry->az_con_obj;
-
- /*
- ** If the reference field is set, this is a reference to a control
- ** defined elsewhere. Otherwise it is an inline definition.
- */
-
- while (widget_entry->obj_header.az_reference != NULL)
- widget_entry =
- (sym_widget_entry_type *)widget_entry->obj_header.az_reference;
-
- /*
- ** Queue the control to be processed if it has not already been
- ** emitted or queued for processing.
- */
-
- if ((widget_entry->obj_header.b_flags & (sym_m_exported | sym_m_private))
- &&
- (widget_entry->output_state == sym_k_not_processed)
- )
- {
- widget_entry->output_state = sym_k_queued;
-
- push((sym_entry_type *) widget_entry );
- }
-
- if (widget_entry->obj_header.az_name == NULL)
- {
- /*
- ** Need a resource id.
- */
-
- if (widget_entry->resource_id == 0 )
- {
- urm_status =
- UrmIdbGetResourceId
- ( out_az_idbfile_id, &(widget_entry->resource_id) );
- if( urm_status != MrmSUCCESS)
- issue_urm_error( "obtaining resource id" );
- }
-
- form = URMrRID;
- *id = widget_entry->resource_id;
- *index = NULL;
- }
- else
- {
- /*
- ** Need an index
- */
-
- form = URMrIndex;
- *index = widget_entry->obj_header.az_name->c_text;
- *id = 0 ;
- }
-
- *access = URMaPublic;
-
- if (widget_entry->obj_header.b_flags & sym_m_private)
- *access = URMaPrivate;
-
- return form;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function issue a diagnostic for an error detected by URM.
-**
-** FORMAL PARAMETERS:
-**
-** problem string indicating what p2_output was trying to do
-**
-** IMPLICIT INPUTS:
-**
-** out_az_context context in error (hold further info about error)
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** diagnostic is issued - compilation stops
-**
-**--
-**/
-
-void issue_urm_error( problem )
-
-char *problem;
-
-{
- char buffer[132];
-
- sprintf(buffer, "while %s encountered %s",
- problem,
- Urm__UT_LatestErrorMessage());
-
- diag_issue_internal_error( buffer );
-}
-\f
-/*
- *++
- *
- * PROCEDURE DESCRIPTION:
- *
- * This procedure maps uil literal type to Urm equivalent types
- *
- * FORMAL PARAMETERS:
- *
- * uil_type uil types sym_k_..._value
- *
- * IMPLICIT INPUTS:
- *
- * none
- *
- * IMPLICIT OUTPUTS:
- *
- * none
- *
- * FUNCTION VALUE:
- *
- * corresponding RGMrType... code
- *
- * SIDE EFFECTS:
- *
- * none
- *
- *--
- */
-
-MrmCode Urm_code_from_uil_type( uil_type )
-
-int uil_type;
-
-{
-
- switch (uil_type)
- {
- case sym_k_integer_value: return MrmRtypeInteger;
- case sym_k_horizontal_integer_value: return MrmRtypeHorizontalInteger;
- case sym_k_vertical_integer_value: return MrmRtypeVerticalInteger;
- case sym_k_bool_value: return MrmRtypeBoolean;
- case sym_k_char_8_value: return MrmRtypeChar8;
- case sym_k_localized_string_value: return MrmRtypeChar8;
- case sym_k_argument_value: return MrmRtypeChar8;
- case sym_k_reason_value: return MrmRtypeChar8;
- case sym_k_trans_table_value: return MrmRtypeTransTable;
- case sym_k_asciz_table_value: return MrmRtypeChar8Vector;
- case sym_k_string_table_value: return MrmRtypeCStringVector;
- case sym_k_compound_string_value: return MrmRtypeCString;
- case sym_k_wchar_string_value: return MrmRtypeWideCharacter;
- case sym_k_integer_table_value: return MrmRtypeIntegerVector;
- case sym_k_color_value: return MrmRtypeColor;
- case sym_k_color_table_value: return MrmRtypeColorTable;
- case sym_k_icon_value: return MrmRtypeIconImage;
- case sym_k_float_value: return MrmRtypeFloat;
- case sym_k_horizontal_float_value: return MrmRtypeHorizontalFloat;
- case sym_k_vertical_float_value: return MrmRtypeVerticalFloat;
- case sym_k_font_value: return MrmRtypeFont;
- case sym_k_fontset_value: return MrmRtypeFontSet;
- case sym_k_font_table_value: return MrmRtypeFontList;
- case sym_k_identifier_value: return MrmRtypeAddrName;
- case sym_k_class_rec_name_value: return MrmRtypeClassRecName;
- case sym_k_xbitmapfile_value: return MrmRtypeXBitmapFile;
- case sym_k_widget_ref_value: return MrmRtypeAny;
- case sym_k_pixmap_value: return MrmRtypeIconImage;
- case sym_k_any_value: return MrmRtypeAny;
- case sym_k_keysym_value: return MrmRtypeKeysym;
- case sym_k_single_float_value: return MrmRtypeSingleFloat;
- case sym_k_rgb_value: return MrmRtypeColor;
-
- default:
- _assert( FALSE, "unknown value type" );
- return 0;
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function computes the size of a color table.
-**
-** FORMAL PARAMETERS:
-**
-** table_entry value entry for the color table
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** size of the color table
-**
-** SIDE EFFECTS:
-**
-** colors within the color table may be allocated
-**
-**--
-**/
-
-int compute_color_table_size(table_entry)
-
-sym_value_entry_type *table_entry;
-
-{
- sym_value_entry_type *color_entry;
- int size;
- int i;
- MrmCode arg_type;
- long arg_value;
- MrmCode arg_access;
- char *arg_index;
- MrmResource_id arg_id;
- MrmCode arg_group;
-
- /*
- ** Compute the size of the ColorTable plus the size of the Color
- ** table entries (one per color including fore and back ground).
- ** Multiply entry size by max_index rather than max_index + 1
- ** since RGMColorTable includes 1 entry. Note that descriptors
- ** are sized to consume fullword-aligned blocks of memory in
- ** to preserve alignment for processors requiring such alignment.
- */
-
- size = sizeof(RGMColorTable) +
- sizeof(RGMColorTableEntry)*table_entry->b_max_index;
- size = _FULLWORD (size);
-
- /*
- ** Compute space needed for resource descriptors for the colors.
- */
-
- for (i = 0; i < (int)table_entry->b_table_count; i++)
- {
- color_entry = table_entry->value.z_color[i].az_color;
-
- /*
- ** Default colors have az_color set to 0=back and 1=fore.
- ** These require ColorTableEntries but no resource descriptors.
- */
-
- if ((long)color_entry > 1)
- {
- /*
- ** Call ref_value for each of the colors in the color table.
- ** This will cause them to be created if necessary and also
- ** classify the type of resource needed.
- */
-
- table_entry->value.z_color[i].w_desc_offset = size;
-
- switch (ref_value( color_entry,
- & arg_type, & arg_value, & arg_access,
- & arg_index, & arg_id, & arg_group ) )
- {
- case URMrRID:
- size += sizeof (RGMResourceDesc);
- size = _FULLWORD (size);
- break;
- case URMrIndex:
- size += sizeof(RGMResourceDesc) - sizeof(MrmResource_id) +
- strlen(arg_index)+1;
- size = _FULLWORD (size);
- break;
- default:
- _assert( FALSE, "immediate color values not supported" );
- }
- }
- }
-
- table_entry->w_length = size;
-
- return size;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function creates a color table in a context.
-**
-** FORMAL PARAMETERS:
-**
-** table_entry value entry for the color table
-** buffer pointer to a context buffer
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void create_color_table(table_entry, buffer)
-
-sym_value_entry_type *table_entry;
-char *buffer;
-
-{
- RGMColorTable *table;
- RGMColorTableEntry *item;
- RGMResourceDesc *desc;
- int i;
- MrmCode arg_form;
- MrmCode arg_type;
- long arg_value;
- MrmCode arg_access;
- char *arg_index;
- MrmResource_id arg_id;
- MrmCode arg_group;
-
- /*
- ** Fill in the Color Table fields
- */
-
- table = (RGMColorTable *)buffer;
-
- table->validation = URMColorTableValid;
- table->count = table_entry->b_max_index + 1;
-
- /*
- ** Loop thru the colors in the table setting up both the index
- ** of offset for the colors and their resource descriptors.
- */
-
- item = table->item;
-
- for (i = 0; i < (int)table_entry->b_table_count; i++)
- {
- int index;
-
- index = table_entry->value.z_color[i].b_index;
- table->item[index].color_item.coffs =
- table_entry->value.z_color[i].w_desc_offset;
- desc = (RGMResourceDesc *)
- (buffer + table_entry->value.z_color[i].w_desc_offset);
-
- /*
- ** Default colors have b_index set to 0=back and 1=fore.
- ** These require ColorTableEntries but no resource descriptors.
- */
-
- if (index > 1)
- {
- table->item[index].type = MrmRtypeResource;
-
- /*
- ** Call ref_value for each of the colors in the color table.
- ** This provide the necessary info to fill in the resource
- ** descriptor
- */
-
- arg_form = ref_value( table_entry->value.z_color[i].az_color,
- & arg_type, & arg_value, & arg_access,
- & arg_index, & arg_id, & arg_group );
-
- desc->access = arg_access;
- desc->type = arg_form;
- desc->res_group = arg_group;
- desc->cvt_type = arg_type;
-
- switch (arg_form)
- {
- case URMrRID:
- desc->size = sizeof( RGMResourceDesc );
- desc->key.id = arg_id;
- break;
- case URMrIndex:
- desc->size = strlen( arg_index ) + 1;
- _move( desc->key.index, arg_index, desc->size );
- desc->size += sizeof( RGMResourceDesc ) -
- sizeof( MrmResource_id );
- break;
- default:
- _assert( FALSE, "immediate color values not supported" );
- }
- }
- }
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function computes the size of an icon.
-**
-** FORMAL PARAMETERS:
-**
-** icon_entry value entry for the icon
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** size of the icon
-**
-** SIDE EFFECTS:
-**
-** color table within the icon may be allocated
-**
-**--
-**/
-
-int compute_icon_size(icon_entry)
-
-sym_value_entry_type *icon_entry;
-
-{
- int size;
- int pixel_type;
- MrmCode arg_type;
- long arg_value;
- MrmCode arg_access;
- char *arg_index;
- MrmResource_id arg_id;
- MrmCode arg_group;
-
- /*
- ** The size of the icon consist of the size of the RGMIconImage
- ** structure + the size of the color table resource descriptor
- ** + the actual data.
- */
-
- size = sizeof( RGMIconImage );
-
- /*
- ** Compute space needed for the color table resource descriptor
- **
- ** Call ref_value.
- ** This will cause the table to be created if necessary and also
- ** classify the type of resource needed.
- */
-
- switch (ref_value( icon_entry->value.z_icon->az_color_table,
- & arg_type, & arg_value, & arg_access,
- & arg_index, & arg_id, & arg_group ) )
- {
- case URMrRID:
- size += sizeof( RGMResourceDesc );
- break;
- case URMrIndex:
- size += sizeof( RGMResourceDesc ) - sizeof( MrmResource_id ) +
- strlen( arg_index ) + 1;
- break;
- default:
- _assert( FALSE, "immediate color table values not supported" );
- }
-
- /*
- ** Save the offset of the data for later.
- */
-
- icon_entry->b_data_offset = size;
-
- /*
- ** Bits per pixel is based on the number of colors used.
- ** Pixel_type:
- ** 0 for 1 bit pixels
- ** 1 for 2 bit pixels
- ** 2 for 4 bit pixels
- ** 3 for 8 bit pixels
- ** URM's pixels size encoding is pixel_type + 1
- ** Pixel_size = 1 << pixel_type
- */
-
- pixel_type = icon_entry->value.z_icon->az_color_table->b_max_index;
-
- if (pixel_type < 2)
- pixel_type = 0;
- else if (pixel_type < 4)
- pixel_type = 1;
- else if (pixel_type < 16)
- pixel_type = 2;
- else
- pixel_type = 3;
-
- icon_entry->b_pixel_type = pixel_type;
-
- /*
- ** Size is width * height - each row must be an even number of bytes
- */
-
- size += ((int)((icon_entry->value.z_icon->w_width << pixel_type) + 7) / 8)
- * icon_entry->value.z_icon->w_height;
-
- icon_entry->w_length = size;
-
- return size;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function creates an icon in a context buffer
-**
-** FORMAL PARAMETERS:
-**
-** icon_entry value entry for the icon
-** buffer pointer to context buffer
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** buffer is filled in
-**
-**--
-**/
-
-void create_icon(icon_entry,buffer)
-
-sym_value_entry_type *icon_entry;
-char *buffer;
-
-{
- sym_value_entry_type *row_entry;
- RGMIconImage *icon;
- RGMResourceDesc *desc;
- MrmCode arg_form;
- MrmCode arg_type;
- long arg_value;
- MrmCode arg_access;
- char *arg_index;
- MrmResource_id arg_id;
- MrmCode arg_group;
-
- unsigned char *sbyte;
- unsigned char *tbyte;
- int w_len;
- int p_len;
- int i;
- int j;
- char pixel_type;
- char pixel_size;
- char pixel_per_byte;
-
- /*
- ** Fill in the fixed location fields of the IconImage.
- */
-
- icon = (RGMIconImage *)buffer;
-
- icon->validation = URMIconImageValid;
- pixel_type = icon_entry->b_pixel_type;
- icon->pixel_size = pixel_type + 1;
- icon->width = icon_entry->value.z_icon->w_width;
- icon->height = icon_entry->value.z_icon->w_height;
- icon->ct_type = MrmRtypeResource;
- icon->color_table.ctoff = sizeof( RGMIconImage );
- icon->pixel_data.pdoff = icon_entry->b_data_offset;
-
- /*
- ** Place color table resource descriptor in the context.
- **
- ** Call ref_value which will return all info need to complete
- ** the description.
- */
-
- arg_form = ref_value( icon_entry->value.z_icon->az_color_table,
- & arg_type, & arg_value, & arg_access,
- & arg_index, & arg_id, & arg_group );
-
- desc = (RGMResourceDesc *)(buffer + sizeof( RGMIconImage ));
-
- desc->access = arg_access;
- desc->type = arg_form;
- desc->res_group = arg_group;
- desc->cvt_type = MrmRtypeResource;
-
- switch (arg_form)
- {
- case URMrRID:
- desc->size = sizeof( RGMResourceDesc );
- desc->key.id = arg_id;
- break;
- case URMrIndex:
- desc->size = strlen( arg_index ) + 1;
- _move( desc->key.index, arg_index, desc->size );
- desc->size += sizeof( RGMResourceDesc ) -
- sizeof( MrmResource_id );
- break;
- default:
- _assert( FALSE, "immediate color values not supported" );
- }
-
- /*
- ** Now move the pixels into the buffer
- ** Variable usage:
- ** sbyte: base of source byte stream
- ** tbyte: current position in target byte stream
- ** w_len: # of pixels that will go into integral # of bytes
- ** p_len: # of pixels that will go into final byte
- */
-
- pixel_per_byte = 8 >> pixel_type;
- pixel_size = 1 << pixel_type;
-
- tbyte = (unsigned char *)(buffer + icon_entry->b_data_offset);
-
- for (row_entry = icon_entry->value.z_icon->az_rows,
- w_len = ((int)row_entry->w_length / (int)pixel_per_byte) * pixel_per_byte,
- p_len = row_entry->w_length - w_len;
-
- row_entry != NULL;
-
- row_entry = row_entry->az_next_table_value)
- {
- sbyte = (unsigned char *)row_entry->value.c_value;
-
- for (i = 0; i < w_len; tbyte++)
- {
- for (*tbyte = 0, j = 0;
- j < 8;
- j += pixel_size )
- {
- unsigned char t;
-
- t = sbyte[i++] << j;
- *tbyte |= t;
- }
- }
-
- if (p_len > 0)
- {
- for ( *tbyte = 0, j = 0;
- j < (p_len * pixel_size);
- j += pixel_size )
- {
- unsigned char t;
-
- t = sbyte[i++] << j;
- *tbyte |= t;
- }
- tbyte++;
- }
- }
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function counts the number of valid, usable entries in a
-** list. It simply accumulates all the nodes in the list (recursively)
-** which match the given node type.
-**
-** FORMAL PARAMETERS:
-**
-** list_entry the list to be counted
-** type the node type to match
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** the number of nodes which matched the type
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-int compute_list_size (list_entry, type)
- sym_list_entry_type *list_entry;
- int type;
-
-{
-
-/*
- * Local variables
- */
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-int count = 0;
-
-/*
- * loop down the list
- */
-if ( list_entry == NULL ) return 0;
-for (list_member=(sym_obj_entry_type *)list_entry->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry = (sym_nested_list_entry_type *) list_member;
- count += compute_list_size (nested_list_entry->az_list, type);
- break;
- default:
- if ( list_member->header.b_tag == (char)type )
- count += 1;
- break;
- }
-
-return count;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine creates the internal compression code tables.
-**
-** Upon calling this routine, the internal compression code tables
-** (uil_arg_compr, uil_reas_compr, and uil_widget_compr) have zero
-** entries for resources which have not been referenced in this UIL
-** module and have one entries for resrources which have been referenced.
-**
-** This routine assigns increasing integers to each non-zero entry in the
-** internal compression code tables.
-**
-** The internal compression code tables are indexed by subclass to yield
-** the external compression code values which are written to the UID file.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** uil_arg_compr
-** uil_reas_compr
-** uil_widget_compr
-**
-** IMPLICIT OUTPUTS:
-**
-** uil_arg_compr
-** uil_reas_compr
-** uil_widget_compr
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void create_int_compression_codes ()
-{
-
-/*
- * Local variables
- */
-int i;
-int compression_code = 2;
-
- /*
- ** Request compression codes for all subtree resources.
- */
-
- for ( i=0 ; i<uil_max_object ; i++ )
- if ( uil_urm_subtree_resource[i] != 0 )
- uil_arg_compr[uil_urm_subtree_resource[i]] = 1;
-
- /*
- ** Create compression code tables for object classes. This include
- ** both widgets and gadgets, since both have class literals.
- **
- */
-
- for (i = 0 ; i <= uil_max_object; i++)
- {
- if (uil_widget_compr[i] == 1)
- uil_widget_compr[i] = compression_code++;
- }
-
- /*
- ** Create compression code tables for arguments
- **
- */
-
- compression_code = 2;
- for (i = 0 ; i <= uil_max_arg ; i++)
- {
- if (uil_arg_compr[i] == 1)
- uil_arg_compr[i] = compression_code++;
- }
-
- /*
- ** Create compression code tables for reasons.
- ** Note that the numbering continues from where we left off with args.
- */
-
- for (i = 0;
- i <= uil_max_reason;
- i++)
- {
- if (uil_reas_compr[i] == 1)
- uil_reas_compr[i] = compression_code++;
- }
-
- /*
- ** Create compression code tables for automatic children.
- ** Note that numbering continues where we left off with reasons.
- */
- for (i = 0; i <= uil_max_child; i++)
- {
- if (uil_child_compr[i] == 1)
- uil_child_compr[i] = compression_code++;
- }
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine creates the external compression code tables.
-**
-**
-** This routine writes the corresponding toolkit name to the external
-** compression code table for each non-zero entry in the internal
-** compression code table.
-**
-** The internal compression code tables are indexed by subclass to yield
-** the external compression code values which are written to the UID file.
-** The external compression codes are used as an index to the external
-** compression code tables so that MRM can map the compression code into
-** the corresponding toolkit name.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** uil_arg_compr
-** uil_reas_compr
-** uil_widget_compr
-**
-** IMPLICIT OUTPUTS:
-**
-** extern_args_compr
-** extern_widget_compr
-** %ArgCmpr (index for argument compression table in UID file)
-** %ReasCmpr (index for reason compression table in UID file)
-** %ClassCmpr (index for class compression table in UID file)
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void create_ext_compression_codes ()
-{
-
-/*
- * Local variables
- */
-int i;
-int comp_code;
-int next_code;
-int text_offset;
-int arg_value_count;
-int arg_value_size;
-char *arg_buffer;
-int class_value_count;
-int class_value_size;
-char *class_buffer;
-status urm_status;
-
- /*
- ** Create compression code tables for arguments
- **
- ** Determine number of elements in external compression table
- ** ( extern_arg_compr[] ) and size of external compression table.
- */
-
- arg_value_size = sizeof (UidCompressionTable);
- arg_value_count = UilMrmReservedCodeCount;
- next_code = UilMrmMinValidCode;
- for (i = 0;
- i <= uil_max_arg;
- i++)
- {
- if (uil_arg_compr[i] != 0)
- {
- arg_value_count++;
- next_code++;
- if (uil_argument_toolkit_names[i] == NULL)
- {
- _assert (FALSE, "unknown argument")
- }
- else
- arg_value_size += strlen(uil_argument_toolkit_names[i]) + 1;
- }
- }
-
- /*
- ** Add compression codes for reasons
- */
-
- for (i = 0;
- i <= uil_max_reason;
- i++)
- {
- if (uil_reas_compr[i] != 0)
- {
- arg_value_count++;
- next_code++;
- if (uil_reason_toolkit_names[i] == NULL)
- {
- _assert (FALSE, "unknown argument")
- }
- else
- arg_value_size += strlen(uil_reason_toolkit_names[i]) + 1;
- }
- }
-
- /*
- ** Add compression codes for automatic children
- */
-
- for (i = 0; i <= uil_max_child; i++)
- {
- if (uil_child_compr[i] != 0)
- {
- arg_value_count++;
- next_code++;
- arg_value_size += strlen(uil_child_names[i]) + 1;
- }
- }
-
- /*
- ** Add the space for the table's vector entries (the next code counts
- ** one more space than we need, but as a zero-based code has the
- ** correct number in it).
- */
- arg_value_size += sizeof(UidCTableEntry) * next_code;
-
-
- /*
- ** Check that the resource context is large enough to hold the value
- */
-
- if ( (int)(UrmRCSize( out_az_context )) < arg_value_size )
- {
- if( MrmSUCCESS !=
- UrmResizeResourceContext( out_az_context, arg_value_size ))
- issue_urm_error( "allocating context" );
- }
-
- /*
- ** Set up the resource context and point extern_arg_compr to the resource
- ** context buffer.
- */
-
- UrmRCSetGroup( out_az_context, URMgLiteral );
- UrmRCSetType( out_az_context, sym_k_asciz_table_value );
- UrmRCSetAccess( out_az_context, URMaPublic );
- UrmRCSetLock( out_az_context, FALSE );
- UrmRCSetSize( out_az_context, arg_value_size );
-
- arg_buffer = (char *) UrmRCBuffer( out_az_context );
-
- extern_arg_compr = (UidCompressionTable *)arg_buffer;
- bzero (arg_buffer, arg_value_size);
-
- /*
- ** Now fill in the actual value of the external compresion code
- ** table ( extern_arg_compr[] ).
- */
-
- extern_arg_compr->validation = UidCompressionTableValid;
- extern_arg_compr->num_entries = arg_value_count;
-#ifdef WORD64
- text_offset = ((int)&extern_arg_compr->entry[arg_value_count]
- - (int)extern_arg_compr) * sizeof(int);
-#else
- text_offset = (long)&extern_arg_compr->entry[arg_value_count]
- - (long)extern_arg_compr;
-#endif
- comp_code = UilMrmMinValidCode;
- for ( i = 0 ; i<=uil_max_arg ; i++ )
- {
- if (uil_arg_compr[i] != 0)
- {
- _move( &(arg_buffer[text_offset]),
- uil_argument_toolkit_names[i],
- strlen(uil_argument_toolkit_names[i]) + 1);
- extern_arg_compr->entry[comp_code].stoffset = text_offset;
- text_offset += (strlen(uil_argument_toolkit_names[i]) + 1);
- comp_code++;
- }
- }
-
- for ( i = 0 ; i<=uil_max_reason ; i++ )
- {
- if (uil_reas_compr[i] != 0)
- {
- _move( &(arg_buffer[text_offset]),
- uil_reason_toolkit_names[i],
- strlen(uil_reason_toolkit_names[i]) + 1);
- extern_arg_compr->entry[comp_code].stoffset =
- text_offset;
- text_offset += (strlen(uil_reason_toolkit_names[i]) + 1);
- comp_code++;
- }
- }
-
- for ( i = 0 ; i<=uil_max_child ; i++ )
- {
- if (uil_child_compr[i] != 0)
- {
- char *name;
-
- if (strncmp(uil_child_names[i], AUTO_CHILD_PREFIX,
- strlen(AUTO_CHILD_PREFIX)) == 0)
- name = (uil_child_names[i] + strlen(AUTO_CHILD_PREFIX));
- else name = uil_child_names[i];
-
- _move( &(arg_buffer[text_offset]), name, strlen(name) + 1);
- extern_arg_compr->entry[comp_code].stoffset = text_offset;
- text_offset += (strlen(name) + 1);
- comp_code++;
- }
- }
-
- /*
- ** Finally write the argument compression code table out to the UID file
- */
- urm_status =
- UrmPutIndexedLiteral (out_az_idbfile_id,
- UilMrmResourceTableIndex, out_az_context);
- if (urm_status != MrmSUCCESS)
- {
- if (urm_status == MrmEOF)
- diag_issue_diagnostic ( d_uid_write, diag_k_no_source,
- diag_k_no_column, Uil_current_file );
- else
- issue_urm_error("emitting literal");
- }
-
-\f
- /*
- ** Create compression code tables for classes
- **
- ** Determine number of elements in external compression table
- ** ( extern_class_compr[] ) and size of external
- ** compression table.
- ** PROBABL ERROR: WHAT ABOUT GADGETS???
- */
-
- class_value_size = sizeof (UidCompressionTable);
- class_value_count = UilMrmReservedCodeCount;
- next_code = UilMrmMinValidCode;
- for (i = 0;
- i <= uil_max_object;
- i++)
- if (uil_widget_compr[i] != 0)
- {
- class_value_count++;
- next_code++;
- if (uil_widget_funcs[i] == NULL)
- {
- _assert (FALSE, "unknown class")
- }
- else
- class_value_size += strlen(uil_widget_funcs[i]) + 1;
- }
-
- /*
- ** Again, compute the additional size for the vector.
- */
-
- class_value_size += sizeof(UidCTableEntry) * next_code;
-
- /*
- ** Check that the resource context is large enough to hold the value
- */
-
- if ( (int)(UrmRCSize(out_az_context)) < class_value_size )
- {
- if( MrmSUCCESS !=
- UrmResizeResourceContext( out_az_context, class_value_size ))
- issue_urm_error( "allocating context" );
- }
-
- /*
- ** Set up the resource context and point extern_class_compr to the resource
- ** context buffer.
- */
-
- UrmRCSetGroup( out_az_context, URMgLiteral );
- UrmRCSetType( out_az_context, sym_k_asciz_table_value );
- UrmRCSetAccess( out_az_context, URMaPublic );
- UrmRCSetLock( out_az_context, FALSE );
- UrmRCSetSize( out_az_context, class_value_size );
-
- class_buffer = (char *) UrmRCBuffer( out_az_context );
-
- extern_class_compr = (UidCompressionTable *)class_buffer;
- bzero (class_buffer, class_value_size);
-
- /*
- ** Now fill in the actual value of the external compresion code
- ** table ( extern_class_compr[] ).
- */
-
- extern_class_compr->validation = UidCompressionTableValid;
- extern_class_compr->num_entries = class_value_count;
-#ifdef WORD64
- text_offset = ((int)&extern_class_compr->entry[class_value_count]
- - (int)extern_class_compr) * sizeof(int);
-#else
- text_offset = (long)&extern_class_compr->entry[class_value_count]
- - (long)extern_class_compr;
-#endif
- comp_code = UilMrmMinValidCode;
- for ( i = 0;
- i <= uil_max_object;
- i++)
- {
- if (uil_widget_compr[i] != 0)
- {
- _move( &(class_buffer[text_offset]),
- uil_widget_funcs[i],
- strlen(uil_widget_funcs[i]) + 1);
- extern_class_compr->entry[comp_code].stoffset =
- text_offset;
- text_offset += (strlen(uil_widget_funcs[i]) + 1);
- comp_code++;
- }
- }
-
- /*
- ** Finally write the class compression code table out to the UID file
- */
- urm_status =
- UrmPutIndexedLiteral (out_az_idbfile_id, UilMrmClassTableIndex,
- out_az_context);
- if (urm_status != MrmSUCCESS)
- {
- if (urm_status == MrmEOF)
- diag_issue_diagnostic ( d_uid_write, diag_k_no_source,
- diag_k_no_column, Uil_current_file );
- else
- issue_urm_error("emitting literal");
- }
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: UilP2Reslv.c /main/11 1995/07/14 09:36:35 drk $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contain the second pass routines for resolving forward
-** references.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include "UilDefI.h"
-
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function processes forward references from the first pass.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_forward_ref_chain
-** sym_az_val_forward_ref_chain
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error messages may be issued for objects that are still undefined
-** or of the wrong type
-**
-**--
-**/
-
-void sem_resolve_forward_refs()
-
-{
- sym_forward_ref_entry_type * fwd_entry;
- sym_forward_ref_entry_type * next_fwd_entry;
- sym_val_forward_ref_entry_type * fwd_val_entry;
- sym_val_forward_ref_entry_type * next_fwd_val_entry;
- sym_widget_entry_type ** target_obj_entry;
- sym_value_entry_type ** target_val_entry;
- sym_parent_list_type * parent_node;
- sym_parent_list_type * parent_ptr;
- int found;
-
- /*
- ** Forward references are placed on a chain by the first pass of
- ** the compiler. This routine walks the chain checking that
- ** 1) name is now defined
- ** 2) name points to the correct type of object
- */
-
- for (fwd_entry = sym_az_forward_ref_chain;
- fwd_entry != NULL;
- fwd_entry = next_fwd_entry)
- {
- sym_name_entry_type * name_entry;
- sym_widget_entry_type * object_entry;
- unsigned short int object_type;
-
-
- /*
- ** Save the pointer to the next forward entry so we can free the current
- ** entry after it is processed.
- */
- next_fwd_entry = fwd_entry->az_next_ref;
-
-
- /*
- ** Call the Status callback routine to report our progress.
- */
- /* %COMPLETE */
- Uil_percent_complete = 60;
- if (Uil_cmd_z_command.status_cb != (Uil_continue_type(*)())NULL)
- diag_report_status();
-
-
- object_type = fwd_entry->header.b_type;
- name_entry = fwd_entry->az_name;
- object_entry = (sym_widget_entry_type *) name_entry->az_object;
-
- if (object_entry == NULL)
- {
- diag_issue_diagnostic
- ( d_never_def,
- _sar_source_pos2 (fwd_entry),
- diag_object_text( object_type ),
- name_entry->c_text );
- continue;
- }
-
- /*
- ** Make sure object references are to correct type of object.
- ** A forward reference naming a widget class may be correctly
- ** resolved by the corresponding gadget class, and vice versa.
- */
- if ((object_entry->header.b_type!=object_type) &&
- (uil_gadget_variants[object_entry->header.b_type]!=object_type) &&
- (uil_gadget_variants[object_type]!=object_entry->header.b_type))
- {
- diag_issue_diagnostic
- (d_ctx_req,
- _sar_source_pos2(fwd_entry),
- diag_object_text(object_type),
- diag_object_text(object_entry->header.b_type));
- continue;
- }
-
- target_obj_entry =
- (sym_widget_entry_type * *) fwd_entry->a_update_location;
- *target_obj_entry = object_entry;
-
- /*
- ** Update objects on forward refernce chain so that their parent_lists point
- ** to the objects which reference them
- */
- if (fwd_entry -> parent != NULL)
- {
- found = FALSE;
- for (parent_ptr = object_entry -> parent_list;
- ((parent_ptr != NULL) && (found == FALSE));
- parent_ptr = parent_ptr -> next)
- {
- if (parent_ptr -> parent == fwd_entry -> parent)
- found = TRUE;
- }
- if (found == FALSE)
- {
- parent_node = (sym_parent_list_type *)
- sem_allocate_node (sym_k_parent_list_entry,
- sym_k_parent_list_size);
- parent_node -> next = object_entry -> parent_list;
- object_entry -> parent_list = parent_node;
- parent_node -> parent = fwd_entry -> parent;
- }
- }
-
-
- /*
- ** Free the Forward reference entry now that it is no longer needed
- */
- sem_free_node(( sym_entry_type *)fwd_entry);
-
- }
-
-\f
- /*
- ** Now resolve the forward references to values
- **/
-
- /*
- ** Forward references are placed on a chain by the first pass of
- ** the compiler. This routine walks the chain checking that
- ** 1) name is now defined
- ** 2) name points to the correct type of value
- */
-
- for (fwd_val_entry = sym_az_val_forward_ref_chain;
- fwd_val_entry != NULL;
- fwd_val_entry = next_fwd_val_entry)
- {
- sym_name_entry_type * name_entry;
- sym_value_entry_type * value_entry;
- sym_obj_entry_type * obj_entry;
-
-
- /*
- ** Save the pointer to the next forward entry so we can free the current
- ** entry after it is processed.
- */
- next_fwd_val_entry = fwd_val_entry->az_next_ref;
-
-
- /*
- ** Call the Status callback routine to report our progress.
- */
- /* %COMPLETE */
- Uil_percent_complete = 60;
- if (Uil_cmd_z_command.status_cb != (Uil_continue_type(*)())NULL)
- diag_report_status();
-
- name_entry = fwd_val_entry->az_name;
- value_entry = (sym_value_entry_type *) name_entry->az_object;
- obj_entry = (sym_obj_entry_type *) name_entry->az_object;
-
- if (value_entry == NULL)
- {
- diag_issue_diagnostic
- ( d_never_def,
- _sar_source_pos2 (fwd_val_entry),
- "value",
- name_entry->c_text );
- continue;
- }
-
- switch (fwd_val_entry->fwd_ref_flags)
- {
- case (sym_k_patch_add):
- case (sym_k_patch_list_add):
- {
- target_val_entry =
- (sym_value_entry_type * *) fwd_val_entry->a_update_location;
- *target_val_entry = value_entry;
- break;
- }
- default:
- _assert(FALSE, "Illegal forward reference");
- }
-
-
- /*
- ** Free the Forward reference entry now that it is no longer needed
- */
- sem_free_node(( sym_entry_type *)fwd_val_entry);
-
- }
-
-
-
-
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: UilSarComp.c /main/11 1995/07/14 09:36:46 drk $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module supports compound strings in UIL. It includes
-** the basic operations for creating, copying, and concatenating
-** strings.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-
-
-#include <Mrm/MrmAppl.h>
-
-
-
-#ifdef DXM_V11
-#include <DXm/DXmHelpB.h>
-#endif
-
-#include "UilDefI.h"
-
-/*
-**
-** TABLE OF CONTENTS
-**
-**/
-
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-#define clear_class_mask (~(sym_m_private | sym_m_imported | sym_m_exported))
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-extern yystype yylval;
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function creates a null compound string.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** a copy of the primitive string may be made
-**
-**--
-**/
-
-sym_value_entry_type *sem_create_cstr()
-
-{
- sym_value_entry_type *az_cstr_entry;
-
- az_cstr_entry = (sym_value_entry_type *)
- sem_allocate_node
- ( sym_k_value_entry,
- sym_k_value_entry_size + sizeof( char * ) );
-
- az_cstr_entry->obj_header.b_flags = sym_m_builtin | sym_m_private;
- az_cstr_entry->b_type = sym_k_compound_string_value;
- az_cstr_entry->w_length = sizeof (char *);
- az_cstr_entry->b_direction = NOSTRING_DIRECTION;
-
- /* Fix for CN 16149 (DTS 10023) part 1 -- initialize charset info */
- az_cstr_entry->b_charset = sym_k_error_charset;
- az_cstr_entry->az_charset_value = NULL;
-
- _sar_save_source_pos (&az_cstr_entry->header, &yylval);
-
- return az_cstr_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function creates a null wide_character string.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** a copy of the primitive string may be made
-**
-**--
-**/
-
-sym_value_entry_type *sem_create_wchar_str()
-
-{
- sym_value_entry_type *az_wchar_str_entry;
-
- az_wchar_str_entry = (sym_value_entry_type *)
- sem_allocate_node
- ( sym_k_value_entry,
- sym_k_value_entry_size + sizeof( char * ) );
-
- az_wchar_str_entry->obj_header.b_flags = sym_m_builtin | sym_m_private;
- az_wchar_str_entry->b_type = sym_k_wchar_string_value;
- az_wchar_str_entry->w_length = sizeof (char *);
- az_wchar_str_entry->b_direction = NOSTRING_DIRECTION;
-
- _sar_save_source_pos (&az_wchar_str_entry->header, &yylval);
-
- return az_wchar_str_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function appends a primitive or a localized string to a
-** compound string.
-**
-** FORMAL PARAMETERS:
-**
-** az_cstr_entry compound string
-** az_str_entry primitive string or localized string
-** op2_temporary true if op2 is not needed after operation
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** a copy of the primitive string may be made
-**
-**--
-**/
-
-void sem_append_str_to_cstr(az_cstr_entry, az_str_entry, op2_temporary)
-
-sym_value_entry_type *az_cstr_entry;
-sym_value_entry_type *az_str_entry;
-boolean op2_temporary;
-
-{
- sym_value_entry_type *last_str_entry;
- sym_value_entry_type **ptr;
- sym_value_entry_type *new_str_entry;
- boolean merge;
-
- /*
- ** A couple of points:
- ** 1) if op2_temporary = FALSE - we must make a copy
- ** of it
- ** 2) if the last string of the compound string has the same attributes
- ** as the string being appended, the strings are merged into 1
- */
-
- /* find the last string of the compound string */
-
- ptr = &(az_cstr_entry->az_first_table_value);
- last_str_entry = *ptr;
- merge = FALSE;
-
- if (last_str_entry != NULL)
- {
- for ( ;
- last_str_entry->az_next_table_value != NULL;
-
- ptr = (sym_value_entry_type * *)
- &(last_str_entry->az_next_table_value),
- last_str_entry = *ptr);
-
- if ((last_str_entry->b_charset == az_str_entry->b_charset)
- &&
- ((last_str_entry->b_direction)== (az_str_entry->b_direction))
- &&
- ((last_str_entry->b_aux_flags & sym_m_separate) == 0 ))
- merge = TRUE;
- else
- ptr = (sym_value_entry_type * *)
- &(last_str_entry->az_next_table_value);
- }
-
- if (merge)
- {
- new_str_entry =
- sem_cat_str_to_str( last_str_entry, TRUE,
- az_str_entry, op2_temporary );
- }
- else
- {
- /*
- ** Append a new segment to the compound string
- */
-
- if( op2_temporary == FALSE )
- {
- unsigned short old_size;
-
- /* must make a copy since user has access to string via name */
-
- new_str_entry = (sym_value_entry_type *)
- sem_allocate_node( sym_k_value_entry,
- az_str_entry->header.w_node_size<<2 );
-
- old_size = new_str_entry->header.w_node_size;
-
- _sym_copy_entry( new_str_entry,
- az_str_entry,
- az_str_entry->header.w_node_size );
-
- new_str_entry->header.w_node_size = old_size;
-
- }
- else
- new_str_entry = az_str_entry;
-
- }
-
- /* link to the end of the compound string */
-
- new_str_entry->b_aux_flags |= sym_m_table_entry;
- new_str_entry->obj_header.b_flags = sym_m_private | sym_m_builtin;
- new_str_entry->obj_header.az_name = NULL;
- new_str_entry->az_next_table_value = NULL;
- *ptr = new_str_entry;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function appends a compound string to a compound string.
-**
-** FORMAL PARAMETERS:
-**
-** az_cstr1_entry compound string
-** az_cstr2_entry compound string
-** op2_temporary true if op2 is not needed after operation
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sem_append_cstr_to_cstr(az_cstr1_entry, az_cstr2_entry, op2_temporary)
-
-sym_value_entry_type *az_cstr1_entry;
-sym_value_entry_type *az_cstr2_entry;
-boolean op2_temporary;
-
-{
- sym_value_entry_type *last_str_entry;
- sym_value_entry_type **ptr;
- sym_value_entry_type *next_str_entry;
-
- /*
- ** A couple of points:
- ** 1) if op2_temporary = FALSE - we must make a copy of 2nd compound
- ** string
- ** 2) if the last string of 1st compound string has the same attributes
- ** as the 1st string of the 2nd compound string being appended,
- ** the strings are merged into 1
- */
-
- /* find the last string of the 1st compound string */
-
- ptr = &(az_cstr1_entry->az_first_table_value);
- last_str_entry = *ptr;
-
- next_str_entry = az_cstr2_entry->az_first_table_value;
-
- if (op2_temporary)
- sem_free_node(( sym_entry_type *) az_cstr2_entry );
-
- if (next_str_entry == NULL)
- return;
-
- if (last_str_entry != NULL)
- {
- for ( ;
- last_str_entry->az_next_table_value != NULL;
-
- ptr = (sym_value_entry_type * *)
- &(last_str_entry->az_next_table_value),
- last_str_entry = *ptr);
-
- if ((last_str_entry->b_charset == next_str_entry->b_charset)
- &&
- ((last_str_entry->b_direction)== (next_str_entry->b_direction))
- &&
- ((last_str_entry->b_aux_flags & sym_m_separate) == 0 ))
- {
- last_str_entry =
- sem_cat_str_to_str( last_str_entry, TRUE,
- next_str_entry, op2_temporary );
- last_str_entry->b_aux_flags |= sym_m_table_entry;
- *ptr = last_str_entry;
- next_str_entry =
- (sym_value_entry_type *) next_str_entry->az_next_table_value;
- }
-
- ptr = (sym_value_entry_type * *)
- &(last_str_entry->az_next_table_value);
- }
-
- if (op2_temporary)
- {
- *ptr = next_str_entry;
- return;
- }
-
- for ( ;
- next_str_entry != NULL;
- next_str_entry = (sym_value_entry_type *)
- next_str_entry->az_next_table_value )
- {
- sym_value_entry_type *new_str_entry;
- unsigned short old_size;
-
- new_str_entry = (sym_value_entry_type *)
- sem_allocate_node( sym_k_value_entry,
- next_str_entry->header.w_node_size<<2 );
-
- old_size = new_str_entry->header.w_node_size;
-
- _sym_copy_entry( new_str_entry,
- next_str_entry,
- next_str_entry->header.w_node_size );
-
- new_str_entry->header.w_node_size = old_size;
- new_str_entry->obj_header.b_flags = sym_m_private | sym_m_builtin;
- new_str_entry->obj_header.az_name = NULL;
- new_str_entry->b_aux_flags |= sym_m_table_entry;
-
- /* link to the end of the compound string */
-
- *ptr = new_str_entry;
- ptr = (sym_value_entry_type * *)
- &(new_str_entry->az_next_table_value);
- }
-
- *ptr = NULL;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function concatenates 2 primitive strings.
-**
-** FORMAL PARAMETERS:
-**
-** az_str1_entry primitive string
-** op1_temporary op1 is a temporary string
-** az_str2_entry primitive string
-** op2_temporary op2 is a temporary string
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** ptr to the result string
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-sym_value_entry_type
- *sem_cat_str_to_str
- (az_str1_entry, op1_temporary, az_str2_entry, op2_temporary)
-
-sym_value_entry_type *az_str1_entry;
-boolean op1_temporary;
-sym_value_entry_type *az_str2_entry;
-boolean op2_temporary;
-
-{
- sym_value_entry_type *new_str_entry;
- int l1, l2;
-
- /*
- ** Can only append two simple strings if they have the same direction and
- ** the first does not have the separate attribute.
- */
- _assert(((az_str1_entry->b_charset == az_str2_entry->b_charset)
- &&
- ((az_str1_entry->b_direction) == (az_str2_entry->b_direction))
- ),
- "strings with different attrs concatenated" );
-
- l1 = az_str1_entry->w_length;
- l2 = az_str2_entry->w_length;
-
- /* extra 1 is for terminating null */
-
- new_str_entry = (sym_value_entry_type *)
- sem_allocate_node( sym_k_value_entry,
- sym_k_value_entry_size );
- new_str_entry->value.c_value = XtCalloc(1, l1 + l2 + 1);
-
-
- new_str_entry->obj_header.b_flags = sym_m_builtin | sym_m_private;
-
- _sar_move_source_info_2 (&new_str_entry->header, &az_str1_entry->header);
- new_str_entry->b_charset = az_str1_entry->b_charset;
- new_str_entry->b_direction = az_str1_entry->b_direction;
- new_str_entry->b_aux_flags =
- (az_str1_entry->b_aux_flags & sym_m_separate);
- new_str_entry->b_type = sym_k_char_8_value;
- new_str_entry->w_length = l1 + l2;
-
- _move( new_str_entry->value.c_value,
- az_str1_entry->value.c_value, l1 );
-
- _move( &new_str_entry->value.c_value[ l1 ],
- az_str2_entry->value.c_value,
- l2+1 );
-
- /*
- ** if either of the operands is unnamed - free the node
- */
-
- if (op1_temporary)
- {
- _free_memory( az_str1_entry->value.c_value );
- sem_free_node(( sym_entry_type *) az_str1_entry );
- }
-
- if (op2_temporary)
- {
- _free_memory( az_str2_entry->value.c_value );
- sem_free_node(( sym_entry_type *) az_str2_entry );
- }
-
- return new_str_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function takes the charset sets understood by the parser
-** and maps them to charsets understood by the symbol table and
-** toolkit.
-**
-** FORMAL PARAMETERS:
-**
-** charset_as_subclass sym_k_..._charset literal naming charset
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** sym_k...charset name for charset
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-int sem_map_subclass_to_charset(charset_as_subclass)
-
-int charset_as_subclass;
-
-{
- switch (charset_as_subclass)
- {
-
- case lex_k_fontlist_default_tag:
- case sym_k_fontlist_default_tag:
- return sym_k_fontlist_default_tag;
- case lex_k_default_charset:
- return uil_sym_default_charset;
- case lex_k_userdefined_charset:
- return sym_k_userdefined_charset;
- default:
- _assert (charset_as_subclass!=0, "charset code==0");
- _assert (charset_as_subclass<=uil_max_charset, "unknown charset");
- return charset_as_subclass;
- }
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function verifies the character set indicated by the user.
-**
-** FORMAL PARAMETERS:
-**
-** current_frame current stack frame
-** charset_frame stack frame of CHARSET token
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_charset_verify ( charset_frame )
-
-yystype *charset_frame;
-
-{
- key_keytable_entry_type *az_keyword_entry;
-
- _assert(((charset_frame->b_tag == sar_k_token_frame) ||
- (charset_frame->b_tag == sar_k_value_frame)),
- "token or value frame missing" );
-
- az_keyword_entry = charset_frame->value.az_keyword_entry;
-
-
-
- /*
- ** Store the current charset so it can be used by LEX to processes a
- ** string literal (if the CHARSET_NAME is used to prefix a string literal)
- */
- Uil_lex_l_literal_charset = az_keyword_entry->b_subclass;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function converts a random NAME into a CHARSET_NAME
-** with the default charset.
-**
-** FORMAL PARAMETERS:
-**
-** name_frame current stack frame containing NAME
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** modified name_frame
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** name_frame converted from NAME to CHARSET_NAME
-**
-**--
-**/
-
-void sar_make_fallback_charset(name_frame)
- yystype *name_frame;
-{
- sym_name_entry_type *symbol_entry;
- static key_keytable_entry_type *az_keyword_entry = NULL;
-
- _assert(((name_frame->b_tag == sar_k_token_frame) ||
- (name_frame->b_tag == sar_k_value_frame)),
- "token or value frame missing" );
-
- /* Get symbol and check if already used as charset. */
- symbol_entry = (sym_name_entry_type *)name_frame->value.az_symbol_entry;
-
- if ((symbol_entry->b_flags & sym_m_charset) == 0)
- {
- symbol_entry->b_flags |= sym_m_charset;
- diag_issue_diagnostic(d_default_charset,
- _sar_source_pos2(symbol_entry),
- symbol_entry->c_text,
- DEFAULT_TAG);
- }
-
- /* Get the default charset keyword entry. */
- if (az_keyword_entry == NULL)
- az_keyword_entry = key_find_keyword(strlen(DEFAULT_TAG), DEFAULT_TAG);
-
- _assert((az_keyword_entry !=NULL), "default charset keyword missing");
-
- /* Change NAME to CHARSET_NAME */
- name_frame->value.az_keyword_entry = az_keyword_entry;
- name_frame ->b_type = az_keyword_entry->b_token;
-
- /*
- ** Store the current charset so it can be used by LEX to processes a
- ** string literal (if the NAME is used to prefix a string literal)
- */
- Uil_lex_l_literal_charset = az_keyword_entry->b_subclass;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function checks the attributes of CHARACTER_SET function.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame pointer to resultant token stack frame
-** value_frame pointer to frame holding keyword and value
-** prior_value_frame pointer to previous properties
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** attribute information is stuffed in target frame
-**
-**--
-**/
-
-void sar_chk_charset_attr( target_frame, value_frame, prior_value_frame )
-
-yystype *target_frame;
-yystype *value_frame;
-yystype *prior_value_frame;
-{
-
- /*
- ** Set up not specified values in the target frame.
- ** b_type will hold the sixteen_bit property
- */
-
- switch (prior_value_frame->b_tag)
- {
- case sar_k_null_frame:
- /*
- ** no prior values
- */
-
- target_frame->b_tag = sar_k_token_frame;
- target_frame->b_direction = NOSTRING_DIRECTION;
- target_frame->b_charset = uil_sym_default_charset;
- target_frame->b_type = 0;
- break;
-
- case sar_k_token_frame:
- case sar_k_value_frame:
- /*
- ** prior values - transfer them
- */
-
- target_frame->b_tag = sar_k_token_frame;
- target_frame->b_direction = prior_value_frame->b_direction;
- target_frame->b_charset = prior_value_frame->b_charset;
- target_frame->b_type = prior_value_frame->b_type;
- break;
- default:
- _assert( FALSE, "prior value frame missing from stack" );
- }
-
- /*
- ** Case on the keyword for the attribute given
- */
-
- switch (value_frame->b_type)
- {
- case RIGHT_TO_LEFT:
- {
- sym_value_entry_type *value_entry;
-
- value_entry =
- (sym_value_entry_type *) value_frame->value.az_symbol_entry;
-
- /*
- ** If the value is a boolean, then just set the corresponding mask
- ** accordingly.
- */
- if (value_entry->b_type == sym_k_bool_value)
- if (value_entry->value.l_integer == TRUE)
- target_frame->b_direction = XmSTRING_DIRECTION_R_TO_L;
- else
- target_frame->b_direction = XmSTRING_DIRECTION_L_TO_R;
-
- break;
- }
-
- case SIXTEEN_BIT:
- {
- sym_value_entry_type *value_entry;
-
- value_entry =
- (sym_value_entry_type *) value_frame->value.az_symbol_entry;
-
- /*
- ** If the value is a boolean, then just set the corresponding mask
- ** accordingly.
- */
- if (value_entry->b_type == sym_k_bool_value)
- if (value_entry->value.l_integer == TRUE)
- target_frame->b_type |= sym_m_sixteen_bit;
- else
- target_frame->b_type &= ~sym_m_sixteen_bit;
-
- break;
- }
-
- default:
- _assert( FALSE, "keyword missing from stack" );
- }
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function makes a CHARACTER_SET and sets the properties
-** of the string.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame pointer to resultant token stack frame
-** value_frame pointer to string value
-** attr_frame pointer to strings attributes
-** keyword_frame frame to use as locator for result
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_make_charset (target_frame, value_frame, attr_frame, keyword_frame)
-
-yystype *target_frame;
-yystype *value_frame;
-yystype *attr_frame;
-yystype *keyword_frame;
-{
- sym_value_entry_type *value_entry;
-
- _assert( value_frame->b_tag == sar_k_value_frame,
- "value frame missing from stack" );
-
-
- /*
- ** Set the character set information into the symbol table
- ** entry for the char_8 string that indentifies the name of this
- ** userdefined character set.
- */
- value_entry =
- (sym_value_entry_type *) value_frame->value.az_symbol_entry;
- value_entry->b_charset = sym_k_userdefined_charset;
-
-/* BEGIN HaL fix CR 5547 */
- sem_evaluate_value (value_entry);
- if (value_entry->b_type != sym_k_char_8_value)
- diag_issue_diagnostic
- (d_wrong_type,
- _sar_source_pos2( value_entry ),
- diag_value_text( value_entry->b_type ),
- "null-terminated string");
-/* END HaL fix CR 5547 */
-
-
- /*
- ** If the attr_frame is not null, it must be a value frame with contains
- ** a pointer to the attributes frame for this userdefined charset.
- */
- if (attr_frame->b_tag == sar_k_token_frame)
- {
- /*
- ** Set the attributes of the string, as specified by the options
- ** to the CHARACTER_SET function, without disturbing any
- ** existing bits.
- */
- value_entry->b_direction = attr_frame->b_direction;
- value_entry->b_aux_flags = (attr_frame->b_type & sym_m_sixteen_bit);
- }
-
-
- /*
- ** initialize the target frame
- */
-
- _sar_move_source_info( target_frame, keyword_frame );
-
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = sym_k_char_8_value;
- target_frame->b_flags = sym_m_private;
- target_frame->value.az_symbol_entry = value_frame->value.az_symbol_entry;
-
-
- /*
- ** Store the current charset so it can be used by LEX to processes a
- ** string literal (if the CHARACTER_SET function is used to prefix a
- ** string literal)
- */
- Uil_lex_l_literal_charset = lex_k_userdefined_charset;
- Uil_lex_az_literal_charset = value_entry;
-}
-
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilSarDef.h /main/10 1995/07/14 09:36:55 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file defines the interface to the UIL parser.
-** UIL uses YACC as its parsing tool.
-**
-**--
-**/
-
-#ifndef UilSarDef_h
-#define UilSarDef_h
-
-
-
-/*
-** Format of a value on YACC value stack. This is also the form of a
-** token created by the lexical analyzer.
-*/
-
-#define sar_k_null_frame 0 /* tag for an epsilon production */
-#define sar_k_token_frame 1 /* tag for a token frame */
-#define sar_k_value_frame 2 /* tag for a value frame */
-#define sar_k_module_frame 3 /* tag for module frame */
-#define sar_k_object_frame 4 /* tag for object frame */
-#define sar_k_root_frame 5 /* tag for root frame */
-
-typedef struct
-{
- src_source_record_type *az_source_record; /* actual record where token exists */
- unsigned char b_source_pos; /* the character in az_source_record
- where this token begins */
- unsigned char b_source_end; /* the character in az_source_record
- where this token ends */
- unsigned char b_tag; /* tag of stack frame */
- unsigned char b_type; /* for tokens - token number
- for value - the data type */
- unsigned short b_flags; /* used by value */
- unsigned char b_direction; /* used by value */
- unsigned char b_charset; /* used by value */
- union
- {
- /* must be capable of holding a pointer */
- long l_integer; /* integer value*/
- sym_entry_type *az_symbol_entry; /* symbol entry */
- key_keytable_entry_type
- *az_keyword_entry; /* keyword entry */
- } value;
-} yystype;
-
-
-/*
-** Macros for moving source information to and from parse stack frames
-*/
-
-#define _sar_move_source_info( _target, _source ) \
- { \
- yystype *__target; \
- yystype *__source; \
- \
- __target = (_target); __source = (_source); \
- __target->az_source_record = __source->az_source_record;\
- __target->b_source_pos = __source->b_source_pos; \
- __target->b_source_end = __source->b_source_end; \
- }
-
-#define _sar_move_source_info_2( _target, _source ) \
- { \
- sym_entry_header_type *__target; \
- sym_entry_header_type *__source; \
- \
- __target = (_target); __source = (_source); \
- \
- __target->az_src_rec = __source->az_src_rec; \
- __target->b_src_pos = __source->b_src_pos; \
- __target->b_end_pos = __source->b_end_pos; \
- }
-
-
-#define _sar_save_source_info( _target, _src_beg, _src_end ) \
- { \
- sym_entry_header_type *__target; \
- XmConst yystype *__src_end; \
- \
- __target = (_target); \
- __src_end = (_src_end); \
- \
- __target->az_src_rec = __src_end->az_source_record; \
- __target->b_src_pos = __src_end->b_source_pos; \
- __target->b_end_pos = __src_end->b_source_end; \
- }
-
-#define _sar_save_source_pos( _target, _src ) \
- { \
- sym_entry_header_type *__target; \
- XmConst yystype *__src; \
- \
- __target = (_target); __src = (_src); \
- \
- __target->az_src_rec = __src->az_source_record; \
- __target->b_src_pos = __src->b_source_pos; \
- __target->b_end_pos = __src->b_source_end; \
- }
-
-#define _sar_source_position( _source ) \
- _source->az_source_record, \
- _source->b_source_pos
-
-#define _sar_source_pos2( _source ) \
- _source->header.az_src_rec, \
- _source->header.b_src_pos
-
-
-
-#endif /* UilSarDef_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: UilSarExp.c /main/11 1995/07/14 09:37:03 drk $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module supports value expressions in UIL.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include "UilDefI.h"
-
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function processes a binary arithmetic operator in an expression
-**
-** FORMAL PARAMETERS:
-**
-** operator_frame: [in-out] frame holding the operator and the
-** target frame
-** op1_frame: [in] frame holding operand 1
-** op2_frame: [in] frame holding operand 2
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** op1 or op2 symbol entry may be freed
-**
-**--
-**/
-void sar_binary_op(operator_frame, op1_frame, op2_frame)
-
-yystype *operator_frame;
-yystype *op1_frame;
-yystype *op2_frame;
-
-{
- sym_value_entry_type *res_entry;
- int operator;
-
- _assert( operator_frame->b_tag == sar_k_token_frame,
- "operator missing" );
-
- res_entry = (sym_value_entry_type *)
- sem_allocate_node( sym_k_value_entry,
- sym_k_value_entry_size );
-
- res_entry->obj_header.b_flags = sym_m_builtin | sym_m_private;
- res_entry->b_type = sym_k_any_value;
-
-/* res_entry->az_source_rec = op1_frame->az_source_record; */
-
- _sar_save_source_pos (&res_entry->header, op1_frame);
-
- /*
- ** Determine the operator from the operator frame
- */
-
- switch (operator_frame->b_type)
- {
- case AND:
- operator = sym_k_and_op;
- break;
-
- case PLUS:
- operator = sym_k_add_op;
- break;
-
- case MINUS:
- operator = sym_k_subtract_op;
- break;
-
- case MULTIPLY:
- operator = sym_k_multiply_op;
- break;
-
- case DIVIDE:
- operator = sym_k_divide_op;
- break;
-
- case LEFT_SHIFT:
- operator = sym_k_left_shift_op;
- break;
-
- case RIGHT_SHIFT:
- operator = sym_k_right_shift_op;
- break;
-
- case OR:
- operator = sym_k_or_op;
- break;
-
- case XOR:
- operator = sym_k_or_op;
- break;
-
- default:
- _assert( FALSE, "unknown binary operator" );
- }
-
- res_entry->b_expr_opr = operator;
-
- /*
- ** If the value is a forward reference, we'll patch in the
- ** address of the the referenced value between passes. Otherwise,
- ** just point to the referenced value node.
- */
- if ((op1_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (op1_frame,
- (char*)&(res_entry->az_exp_op1), sym_k_patch_add);
- else
- res_entry->az_exp_op1 =
- (sym_value_entry_type *) op1_frame->value.az_symbol_entry;
-
- if ((op2_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (op2_frame,
- (char*)&(res_entry->az_exp_op2), sym_k_patch_add);
- else
- res_entry->az_exp_op2 =
- (sym_value_entry_type *) op2_frame->value.az_symbol_entry;
-
- operator_frame->b_tag = sar_k_value_frame;
- operator_frame->b_type = res_entry->b_type;
- operator_frame->b_flags = res_entry->obj_header.b_flags;
- operator_frame->value.az_symbol_entry =
- (sym_entry_type *) res_entry;
-
- return;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function processes a unary arithmetic operator in an expression
-**
-** FORMAL PARAMETERS:
-**
-** operator_frame: [in-out] frame holding the operator and the
-** target frame
-** op1_frame: [in] frame holding operand 1
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** op1 symbol entry may be freed
-**
-**--
-**/
-void sar_unary_op(operator_frame, op1_frame)
-
-yystype *operator_frame;
-yystype *op1_frame;
-
-{
- sym_value_entry_type *res_entry;
- int operator;
- int res_type;
-
-
- _assert( operator_frame->b_tag == sar_k_token_frame,
- "operator missing" );
-
- /*
- ** Determine the operator from the operator frame
- */
-
- switch (operator_frame->b_type)
- {
- case PLUS:
- operator = sym_k_unary_plus_op;
- break;
-
- case MINUS:
- operator = sym_k_unary_minus_op;
- break;
-
- case NOT:
- operator = sym_k_not_op;
- break;
-
- case INTEGER:
- res_type = sym_k_integer_value;
- operator = sym_k_coerce_op;
- break;
- case FLOAT:
- res_type = sym_k_float_value;
- operator = sym_k_coerce_op;
- break;
- case SINGLE_FLOAT:
- res_type = sym_k_single_float_value;
- operator = sym_k_coerce_op;
- break;
- case KEYSYM:
- res_type = sym_k_keysym_value;
- operator = sym_k_coerce_op;
- break;
-
-
- default:
- _assert( FALSE, "unknown unary operator" );
- }
-
- /*
- ** Create the result
- */
-
- res_entry = (sym_value_entry_type *)
- sem_allocate_node (sym_k_value_entry, sym_k_value_entry_size);
-
- res_entry->b_expr_opr = operator;
- /* Begin fixing OSF CR 5691 */
- res_entry->b_type = operator;
- /* End fixing OSF CR 5691 */
- res_entry->az_exp_op1 =
- (sym_value_entry_type *) op1_frame->value.az_symbol_entry;
- res_entry->obj_header.b_flags = sym_m_builtin | sym_m_private;
- if (operator == sym_k_coerce_op)
- res_entry->b_type = res_type;
-
- _sar_save_source_pos (&res_entry->header, op1_frame );
-
- operator_frame->b_tag = sar_k_value_frame;
- operator_frame->b_type = res_entry->b_type;
- operator_frame->b_flags = res_entry->obj_header.b_flags;
- operator_frame->value.az_symbol_entry = (sym_entry_type *) res_entry;
-
- return;
-
-}
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilSarInc.c /main/12 1997/03/12 15:21:31 dbl $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contain the routines for processing the INCLUDE construct.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include <Xm/Xm.h>
-#include "UilDefI.h"
-
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine handles the include directive.
-**
-** FORMAL PARAMETERS:
-**
-** file_frame parser stack frame that contains the name of the
-** file to be included.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_include_file ( file_frame, include_frame, semi_frame )
-
-yystype * file_frame;
-yystype * include_frame;
-yystype * semi_frame;
-
-{
- sym_value_entry_type * value_entry;
- sym_include_file_entry_type * include_entry;
- sym_section_entry_type * section_entry;
- sym_section_entry_type * section_tail_entry;
- char * buffer;
- unsigned char tmp1;
- int i,j;
-
- value_entry =
- (sym_value_entry_type *) file_frame -> value . az_symbol_entry;
-
-/*
- * Fix for CR 5465 - If the value_entry is not of type char_8, print an
- * error message and abort the compilation
- */
- if ((value_entry->b_type != sym_k_char_8_value) &&
- (value_entry->b_type != sym_k_localized_string_value))
- diag_issue_diagnostic (
- d_include_file,
- _sar_source_pos2(value_entry));
-/*
- * End Fix for CR 5465
- */
-/*
- * If the direction is RtoL then reverse the include file.
- */
- if (value_entry->b_direction == XmSTRING_DIRECTION_R_TO_L)
- {
- /*
- ** Just reverse the bytes from the first to last
- */
- for (i=0, j=value_entry->w_length-1;
- i < (int)((int)value_entry->w_length>>1);
- i++,j--)
- {
- tmp1 = value_entry->value.c_value[ i ];
- value_entry->value.c_value[ i ] =
- value_entry->value.c_value[ j ];
- value_entry->value.c_value[ j ] = tmp1;
- }
- }
-
- _assert (value_entry -> header . b_tag == sym_k_value_entry,
- "missing value entry for include");
-
- /*
- ** Allocate an INCLUDE entry
- */
-
- include_entry = (sym_include_file_entry_type *) sem_allocate_node
- ( sym_k_include_file_entry, sym_k_include_file_entry_size );
-
- /*
- ** Open the include file. Set up a null-terminated name string.
- */
-
- buffer = (char *) _get_memory (value_entry -> w_length + 1);
- _move (buffer, value_entry -> value . c_value,
- value_entry -> w_length);
- buffer [value_entry -> w_length] = 0 ;
-
- src_open_file (buffer, include_entry->full_file_name);
-
- /*
- ** Allocate a section entry for this include "section".
- ** Store the source info in it
- */
-
- section_entry = (sym_section_entry_type *) sem_allocate_node
- ( sym_k_section_entry, sym_k_section_entry_size );
-
- section_entry->header.b_type = sym_k_include_section;
-
- _sar_save_source_info ( §ion_entry->header , include_frame , semi_frame );
-
- /*
- ** Link this section into the current section list.
- */
-
- section_entry->next = (sym_entry_type *) sym_az_current_section_entry;
- section_entry->prev_section = sym_az_current_section_entry->prev_section;
- sym_az_current_section_entry = section_entry;
-
- /*
- ** Link the include intry we created earlier onto the section list
- */
-
- section_entry->entries = (sym_entry_type *)include_entry;
-
- /*
- ** Save the file name
- */
-
- _move (include_entry->file_name, buffer, value_entry->w_length);
- include_entry->file_name [value_entry->w_length] = 0;
-
- /*
- ** Since this is an INCLUDE we want included sections to hang off
- ** of it so we create a new place holder entry (tail) and change the
- ** "current" section list to it.
- */
-
- section_tail_entry = (sym_section_entry_type *) sem_allocate_node
- ( sym_k_section_entry, sym_k_section_entry_size );
-
- section_tail_entry->header.b_type = sym_k_section_tail;
-
- include_entry->sections = section_tail_entry;
-
- section_tail_entry->prev_section = sym_az_current_section_entry;
- sym_az_current_section_entry = section_tail_entry;
-
- _free_memory (buffer);
-
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilSarMod.c /main/13 1997/03/12 15:21:36 dbl $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contain the routines for processing the module construct.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include "UilDefI.h"
-
-/*
-**
-** TABLE OF CONTENTS
-**
-*/
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-extern yystype yylval;
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-externaldef(uil_comp_glbl) src_source_record_type
- *src_az_module_source_record;
-externaldef(uil_comp_glbl) unsigned short int
- *uil_urm_variant = NULL;
-externaldef(uil_comp_glbl) unsigned short int
- *uil_arg_compr = NULL;
-externaldef(uil_comp_glbl) unsigned short int
- *uil_reas_compr = NULL;
-externaldef(uil_comp_glbl) unsigned short int
- *uil_widget_compr = NULL;
-externaldef(uil_comp_glbl) unsigned short int
- *uil_child_compr = NULL;
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-unsigned int module_clauses;
-
-#define m_version_clause (1<<0)
-#define m_names_clause (1<<1)
-#define m_charset_clause (1<<2)
-#define m_objects_clause (1<<3)
-
-#define m_after_names (m_charset_clause)
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function initializes all static data structure for the semantic
-** action routines.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** uil_urm_variant
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** global variables are initialized
-**
-**--
-**/
-
-void sar_initialize ()
-
-{
-int i; /* loop index */
-
-/* BEGIN OSF Fix CR 5443 */
-/* Initialize uil_sym_default_charset based on XmFALLBACK_CHARSET */
-if (strcmp(XmFALLBACK_CHARSET, "ISO8859-1") != 0) /* Most common case. */
- for (i = 0; i < (int)charset_lang_table_max; i++)
- if (strcmp(XmFALLBACK_CHARSET, charset_lang_names_table[i]) == 0)
- {
- uil_sym_default_charset = charset_lang_codes_table[i];
- break;
- }
-/* END OSF Fix CR 5443 */
-
-/*
- * Allocate vectors for the variant and usage vectors if they are NULL,
- */
-if ( uil_urm_variant == NULL )
- uil_urm_variant = (unsigned short int *)
- XtMalloc(sizeof(unsigned short int)*(uil_max_object+1));
-if ( uil_arg_compr == NULL )
- uil_arg_compr = (unsigned short int *)
- XtMalloc(sizeof(unsigned short int)*(uil_max_arg+1));
-if ( uil_reas_compr == NULL )
- uil_reas_compr = (unsigned short int *)
- XtMalloc(sizeof(unsigned short int)*(uil_max_reason+1));
-if ( uil_widget_compr == NULL )
- uil_widget_compr = (unsigned short int *)
- XtMalloc(sizeof(unsigned short int)*(uil_max_object+1));
-if ( uil_child_compr == NULL )
- uil_child_compr = (unsigned short int *)
- XtMalloc(sizeof(unsigned short int)*(uil_max_child+1));
-/*
- ** Loop throught the array of object variants and set them all to NULL.
- */
-for (i = 0; i<uil_max_object+1; i++)
- uil_urm_variant[i] = 0;
-
-/*
- ** Initialize all compression vectors
- */
-for ( i=0 ; i<uil_max_arg+1 ; i++ )
- uil_arg_compr[i] = 0;
-for ( i=0 ; i<uil_max_reason+1 ; i++ )
- uil_reas_compr[i] = 0;
-for ( i=0 ; i<uil_max_object+1 ; i++ )
- uil_widget_compr[i] = 0;
-for ( i=0 ; i<uil_max_child+1 ; i++ )
- uil_child_compr[i] = 0;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function creates the root entry node for the compilation.
-** The "root" entry is the root node of the symbol tree and is
-** what's passed back to the caller of the compiler.
-**
-** FORMAL PARAMETERS:
-**
-** root_frame ptr to root frame that will remain on the stack
-** throughout the compilation
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** sym_az_root_entry global pointer used thoughout the compilation
-** sym_az_curent_section_entry global pointer used thoughout the compilation
-** src_az_first_source_record global pointer to the source record list
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_create_root (root_frame)
-
-yystype *root_frame;
-
-{
- /*
- ** Allocate the symbol nodes
- */
-
- sym_az_root_entry = (sym_root_entry_type *)
- sem_allocate_node (sym_k_root_entry, sym_k_root_entry_size);
-
- /*
- ** Create a place holder entry (tail) and change the "current" section list to it.
- */
-
- sym_az_current_section_entry = (sym_section_entry_type *) sem_allocate_node
- ( sym_k_section_entry, sym_k_section_entry_size );
-
- sym_az_current_section_entry->header.b_type = sym_k_section_tail;
-
- sym_az_root_entry->sections = sym_az_current_section_entry;
- sym_az_root_entry->src_record_list = src_az_first_source_record;
-
- /*
- ** Save the file name and the expanded version of it.
- */
-
- strcpy (sym_az_root_entry->file_name, Uil_cmd_z_command.ac_source_file);
- strcpy (sym_az_root_entry->full_file_name, src_az_source_file_table[0]->expanded_name);
-
- /*
- ** Save the symbol node in the root frame.
- */
-
- root_frame->b_tag = sar_k_root_frame;
- root_frame->b_type = sym_k_root_entry;
- root_frame->value.az_symbol_entry = (sym_entry_type *)sym_az_root_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function create the module entry symbol node for the compilation.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame ptr to module frame that will remain on the stack
-** throughout the compilation
-** id_frame ptr to token frame for the module name
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_root_entry global that points to the root entry
-**
-** IMPLICIT OUTPUTS:
-**
-** sym_az_module_entry global that points to module entry
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** set second line of the listing title
-**
-**--
-**/
-
-void sar_create_module(target_frame, id_frame, module_frame)
-
-yystype *target_frame;
-yystype *id_frame;
-yystype *module_frame;
-
-{
- sym_name_entry_type *name_entry;
-
- /*
- ** Call standard routine to check name entry for id_frame.
- ** This routine handles font name, color names, etc used as ids
- */
-
- name_entry = (sym_name_entry_type *) sem_dcl_name( id_frame );
-
- /*
- ** Allocate the module entry and fill it in
- */
-
- sym_az_module_entry = (sym_module_entry_type *)
- sem_allocate_node (sym_k_module_entry, sym_k_module_entry_size);
- sym_az_module_entry->obj_header.az_name = name_entry;
- _sar_save_source_pos (&sym_az_module_entry->header, module_frame);
-
- /* preserve module header comments */
- sar_assoc_comment ((sym_obj_entry_type *)sym_az_module_entry);
-
- /*
- ** Hang the module entry off the root entry
- */
-
- sym_az_root_entry->module_hdr = sym_az_module_entry;
-
- /*
- ** Have name entry point to the module entry too. This stops the
- ** name from being reused to name another construct.
- */
-
- name_entry->az_object = (sym_entry_type *) sym_az_module_entry;
-
- /*
- ** Save the source information about module name identifier
- */
-
- _sar_save_source_info ( &name_entry->header , module_frame , id_frame );
-
- /*
- ** Set up target frame
- */
-
- target_frame->b_tag = sar_k_module_frame;
-
- /*
- ** Set up listing title
- */
-
- if (Uil_cmd_z_command.v_listing_file)
- sprintf(Uil_lst_c_title2,
- "Module: %s",
- name_entry->c_text );
-
- /*
- ** Set mask to no clauses seen
- */
-
- module_clauses = 0;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function sets a version string for the module.
-**
-** FORMAL PARAMETERS:
-**
-** value_frame ptr to value frame for version string
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** sym_az_module_entry global that point to module entry
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** set up second line of the listing title
-**
-**--
-**/
-
-void sar_process_module_version (value_frame, start_frame)
-
-yystype *value_frame;
-yystype *start_frame;
-
-{
- sym_value_entry_type *value_entry;
-
- _assert( value_frame->b_tag == sar_k_value_frame, "value frame missing" );
-
- if ((module_clauses & m_version_clause) != 0)
- diag_issue_diagnostic
- ( d_single_occur,
- _sar_source_position( value_frame ),
- "UIL", "module", "version", "clause"
- );
-
- /*
- ** FORWARD REFERENCING OF VERSION NO LONGER ALLOWED
- ** If it's not a forward reference, verify its length and stick a pointer
- ** to the value node of the version in the module entry.
- */
-
- if ((value_frame->b_flags & sym_m_forward_ref) != 0)
- diag_issue_diagnostic(d_illegal_forward_ref,
- _sar_source_position(value_frame),
- "Module Version"
- );
-
- else
- {
- value_entry = (sym_value_entry_type *)
- value_frame->value.az_symbol_entry;
-
- if (value_entry->w_length > 31)
- {
- diag_issue_diagnostic
- ( d_out_range,
- _sar_source_position( value_frame ),
- "version string",
- "0..31 characters"
- );
-
- value_entry->w_length = 31;
- }
-
- sym_az_module_entry->az_version = value_entry;
- }
-
- /*
- ** Save source info
- */
-
- _sar_save_source_info ( &sym_az_module_entry->az_version->header , start_frame , value_frame);
-
- /*
- ** Set up listing title
- */
-
- if (Uil_cmd_z_command.v_listing_file)
- sprintf(Uil_lst_c_title2,
- "Module: %s \t Version: %s",
- sym_az_module_entry->obj_header.az_name->c_text,
- value_entry->value.c_value );
-
- module_clauses |= m_version_clause;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function sets the case sensitivity of names for the module.
-**
-** FORMAL PARAMETERS:
-**
-** token_frame ptr to token frame for keyword sensitive or insensitive
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_module_entry global which points to module entry
-**
-** IMPLICIT OUTPUTS:
-**
-** uil_v_case_sensitive global which control case sensitivity of names
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_process_module_sensitivity (token_frame, start_frame)
-
-yystype *token_frame;
-yystype *start_frame;
-
-{
- _assert( token_frame->b_tag == sar_k_token_frame, "token frame missing" );
-
- if ((module_clauses & m_names_clause) != 0)
- diag_issue_diagnostic
- ( d_single_occur,
- _sar_source_position( token_frame ),
- "UIL", "module", "names", "clause"
- );
-
- if ((module_clauses & m_after_names) != 0)
- diag_issue_diagnostic
- ( d_names,
- _sar_source_position( token_frame )
- );
-
- uil_v_case_sensitive = (token_frame->b_type == CASE_SENSITIVE);
-
- sym_az_module_entry->az_case_sense = (sym_value_entry_type *)
- sem_allocate_node (sym_k_value_entry, sym_k_value_entry_size);
-
- sym_az_module_entry->az_case_sense->header.b_type = uil_v_case_sensitive;
-
- /*
- ** Save source info
- */
-
- _sar_save_source_info ( &sym_az_module_entry->az_case_sense->header , start_frame , token_frame);
-
- /* let the keyword table know of the sensitivity change */
-
- key_initialize();
-
-
- /*
- ** The default for name sensitivity is SENSITIVE.
- ** At the point that this semantic routine is called, the only valid
- ** name seen so far is the module name.
- */
-
- module_clauses |= m_names_clause;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function sets the default charset for the module.
-**
-** FORMAL PARAMETERS:
-**
-** token_frame ptr to token frame for charset
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_module_entry global pointer to the module entry
-**
-** IMPLICIT OUTPUTS:
-**
-** Uil_lex_l_user_default_charset
-** Uil_lex_az_charset_entry
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_process_module_charset(token_frame , start_frame)
-
-yystype *token_frame;
-yystype *start_frame;
-
-{
- sym_value_entry_type *value_entry;
-
- _assert( (token_frame->b_tag == sar_k_token_frame) ||
- (token_frame->b_tag == sar_k_value_frame), "token or value frame missing" );
-
- if ((module_clauses & m_charset_clause) != 0)
- diag_issue_diagnostic
- ( d_single_occur,
- _sar_source_position( token_frame ),
- "UIL", "module", "character_set", "clause"
- );
-
- /*
- ** There are two different ways that the charset info may be specified.
- ** If the charset_frame is a token frame, then we can just grab the
- ** token class and map it into a charset value. If it is a value frame
- ** the it is the result of the CHARACTER_SET function and is a string
- ** value representing the character set.
- */
- switch (token_frame->b_tag)
- {
- case sar_k_token_frame:
- {
- key_keytable_entry_type *az_keyword_entry;
- az_keyword_entry = token_frame->value.az_keyword_entry;
-
- Uil_lex_l_user_default_charset = az_keyword_entry->b_subclass;
-
- value_entry = sem_create_value_entry (
- token_frame->value.az_keyword_entry->at_name,
- token_frame->value.az_keyword_entry->b_length, sym_k_char_8_value );
- break;
- }
-
- case sar_k_value_frame:
- {
- Uil_lex_l_user_default_charset = lex_k_userdefined_charset;
- Uil_lex_az_charset_entry = (sym_value_entry_type *)token_frame->value.az_symbol_entry;
- value_entry = (sym_value_entry_type *)token_frame->value.az_symbol_entry;
- break;
- }
- }
-
- /* If charset specified for module, then localized strings not allowed */
- Uil_lex_l_localized = FALSE;
-
- module_clauses |= m_charset_clause;
- sym_az_module_entry->az_character_set = value_entry;
-
- /*
- ** Save source info
- */
-
- _sar_save_source_info ( &value_entry->header , start_frame , token_frame);
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function saves the source record for the module header
-** for possible later use in the machine code listing.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** yylval Current token information from the lexical analyzer
-**
-** IMPLICIT OUTPUTS:
-**
-** src_az_module_source_record source record for the module header
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_save_module_source ()
-
-{
-
- src_az_module_source_record = yylval.az_source_record;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine creates and saves a default object specification
-** for the module entry itself.
-**
-** FORMAL PARAMETERS:
-**
-** object_frame ptr to token frame for "OBJECT"
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** sym_az_module_entry global pointer to the module entry
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_make_def_obj (object_frame)
-
-yystype *object_frame;
-
-{
-sym_def_obj_entry_type *def_obj_entry;
-
-/*
- * Make def_obj entry and link into the chain headed in the module
- */
-def_obj_entry = (sym_def_obj_entry_type *) sem_allocate_node
- (sym_k_def_obj_entry, sym_k_def_obj_entry_size);
-_sar_save_source_pos (&def_obj_entry->header, object_frame);
-def_obj_entry->next = sym_az_module_entry->az_def_obj;
-sym_az_module_entry->az_def_obj = def_obj_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function sets the default variants for objects which
-** are defined in the module.
-**
-** FORMAL PARAMETERS:
-**
-** type_frame ptr to token frame for object type
-** variant_frame ptr to token frame for variant
-**
-** IMPLICIT INPUTS:
-**
-** uil_gadget_variants table to see if the gadget variant is supported
-** uil_urm_variant table to see if the object type has been
-** specified previously
-** sym_az_module_entry global pointing to the module entry
-**
-** IMPLICIT OUTPUTS:
-**
-** uil_urm_variant table to contain the default variant for this
-** object type.
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_process_module_variant (obj_type_frame, variant_frame)
-
-yystype *obj_type_frame;
-yystype *variant_frame;
-
-{
-
- unsigned int obj_type, obj_variant;
- yystype *source_frame;
- sym_def_obj_entry_type *def_obj_entry;
-
- source_frame = & yylval;
-
- obj_type = obj_type_frame->value.az_keyword_entry->b_subclass;
- obj_variant = variant_frame->b_type;
-
-/* See if this object type has been specified before. */
-
- if ( uil_urm_variant[obj_type] != 0 )
- {
- diag_issue_diagnostic
- (d_supersede,
- _sar_source_position ( source_frame ),
- diag_object_text (obj_type),
- diag_tag_text (obj_variant),
- diag_tag_text (sym_k_module_entry),
- "" );
- }
-
-/* See if this object type supports gadgets. */
-
- if ( obj_variant == sym_k_gadget_entry )
- {
- if ( uil_gadget_variants[obj_type] == 0 )
- {
- diag_issue_diagnostic
- (d_gadget_not_sup,
- _sar_source_position ( source_frame ),
- diag_object_text (obj_type),
- diag_object_text (obj_type) );
- obj_variant = sym_k_widget_entry;
- }
- }
-
-/* Save the default variant information */
- uil_urm_variant[obj_type] = obj_variant;
-
-/*
-** get the latest def_obj entry and fill in
-*/
- def_obj_entry = sym_az_module_entry->az_def_obj->next;
- def_obj_entry->b_object_info = obj_type;
- def_obj_entry->b_variant_info = obj_variant;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure saves source info for the various sections declaration
-** lists in the Uil file (i.e. value, identifier, procedure, object, and
-** list).
-**
-** FORMAL PARAMETERS:
-**
-** header_frame ptr to token frame for the section declaration
-** section_type integer describing what section this is
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** sym_az_root_entry global pointer to the root entry
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-*/
-
-void sar_save_section_source (header_frame, section_type)
-
-yystype *header_frame;
-int section_type;
-
-{
- sym_section_entry_type *section_entry;
-
- section_entry = (sym_section_entry_type *) sem_allocate_node
- ( sym_k_section_entry, sym_k_section_entry_size );
-
- section_entry->header.b_type = section_type;
-
- /*
- ** Save source info
- */
-
- _sar_save_source_info ( §ion_entry->header , header_frame, header_frame);
-
- /*
- ** Link this section into the current section list.
- */
-
- section_entry->next = (sym_entry_type *) sym_az_current_section_entry;
- section_entry->prev_section = sym_az_current_section_entry->prev_section;
- sym_az_current_section_entry = section_entry;
-
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: UilSarObj.c /main/14 1995/07/14 09:37:30 drk $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contains the semantic action routines for
-** object definitions in the UIL.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include "UilDefI.h"
-
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-/*
-** This is a fast algorithm for mapping an integer (_size) to
-** 0 _size <= 8
-** 1 8 < _size <= 16
-** 2 16 < _size <= 32
-** 3 32 < _size <= 64
-** 4 64 < _size
-** The algorithm is based on the notion that the floating pt representation
-** of an integer has an exponent that is the log_base2( int ).
-**
-** This algorithm is specific to the VAX. An alternate layout of the
-** internal represention of a floating pt number could be supplied for
-** other architectures.
-*/
-
-#define _compute_node_index( _size, _index ) \
- { unsigned short j, k; \
- j = (_size); \
- if (j <= 8) k = 0; \
- else if (j <= 16) k = 1; \
- else if (j <= 32) k = 2; \
- else if (j <= 64) k = 3; \
- else k = 4; \
- (_index) = k; \
- }
-
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-extern yystype gz_yynullval;
-extern yystype yylval;
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine associates the latest comment block
-** with the current object frame. RAP
-**
-** FORMAL PARAMETERS:
-**
-** object_frame address of the parse stack frame for this
-** object.
-**
-**
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** the object frame contains the comment for this object.
-**
-**--
-**/
-
-void sar_assoc_comment( object )
-
-sym_obj_entry_type *object;
-{
-
- object->obj_header.az_comment = (char *)_get_memory(strlen(comment_text)+1);
- strcpy(object->obj_header.az_comment, comment_text);
- comment_text[0] = '\0';
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine creates the symbol node for the object, and
-** saves it in the object frame on the parse stack.
-**
-** FORMAL PARAMETERS:
-**
-** object_frame address of the parse stack frame for this
-** object.
-**
-** object_type type literal for this object.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** the object frame contains the symbol node for this object.
-**
-**--
-**/
-
-void sar_create_object
- ( yystype *object_frame, unsigned char object_type )
-
-{
-
- sym_name_entry_type * name_entry;
- sym_obj_entry_type * obj_entry;
- int node_size;
- yystype * source_frame;
-
- source_frame = & yylval;
-
- if (object_frame->b_tag != sar_k_null_frame)
- {
-
- /*
- ** First we check on the name to see if it has been previously used.
- ** This function returns NULL if name cannot be used.
- */
- name_entry = (sym_name_entry_type *) sem_dcl_name (object_frame);
- }
- else
- {
- name_entry = NULL;
- }
-
-/* Determine the size of the symbol node to allocate. */
-
- switch (object_type)
- {
- case sym_k_gadget_entry:
- case sym_k_widget_entry:
- node_size = sym_k_widget_entry_size;
- break;
-
- case sym_k_list_entry:
- node_size = sym_k_list_entry_size;
- break;
-
- default:
- _assert (FALSE, "unexpected object type");
- break;
- }
-
-/*
- * Allocate the symbol node, connect it to its name, and save source info
- */
- obj_entry = (sym_obj_entry_type *)
- sem_allocate_node (object_type, node_size);
- if (name_entry != NULL)
- {
- name_entry->az_object = (sym_entry_type *)obj_entry;
- obj_entry->obj_header.az_name = (sym_name_entry_type *)name_entry;
- }
- _sar_save_source_pos (&obj_entry->header, source_frame );
- sar_assoc_comment(obj_entry); /* preserve comments */
-/*
- * Set the definition in progress bit.
- */
- obj_entry->obj_header.b_flags |= sym_m_def_in_progress;
-
-/*
- * Save the symbol node in the object frame.
- */
- object_frame->b_tag = sar_k_object_frame;
- object_frame->b_type = object_type;
- object_frame->value.az_symbol_entry = (sym_entry_type *)obj_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine creates the symbol node for the child, and
-** saves it in the object frame on the parse stack.
-**
-** FORMAL PARAMETERS:
-**
-** object_frame address of the parse stack frame for this
-** object.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** the object frame contains the symbol node for this child.
-**
-**--
-**/
-
-void sar_create_child
- ( yystype *object_frame )
-
-{
- sym_obj_entry_type * obj_entry;
- yystype * source_frame;
-
- source_frame = & yylval;
-
-/*
- * Allocate the symbol node, set its type, and save source info
- */
- obj_entry = (sym_obj_entry_type *)
- sem_allocate_node (sym_k_child_entry, sym_k_widget_entry_size);
- obj_entry->header.b_type =
- object_frame->value.az_keyword_entry->b_subclass;
-
- _sar_save_source_pos (&obj_entry->header, source_frame );
- sar_assoc_comment(obj_entry); /* preserve comments */
-/*
- * Indicate in compress table that this child type is used.
- */
- uil_child_compr[obj_entry->header.b_type] = 1;
-
-/*
- * Set the definition in progress bit.
- */
- obj_entry->obj_header.b_flags |= sym_m_def_in_progress;
-
-/*
- * Save the symbol node in the object frame.
- */
- object_frame->b_tag = sar_k_object_frame;
- object_frame->b_type = sym_k_child_entry;
- object_frame->value.az_symbol_entry = (sym_entry_type *)obj_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine creates and links a section node into the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** id_frame the token frame with the id for this entry.
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_current_section_entry global pointer to the "current" section
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void sar_link_section ( id_frame )
-
-yystype * id_frame;
-
-{
-sym_section_entry_type * section_entry;
-
-/*
- * Allocate a section entry. Link this entry of of the current section list
- */
-section_entry = (sym_section_entry_type *) sem_allocate_node
- (sym_k_section_entry, sym_k_section_entry_size);
-section_entry->next = (sym_entry_type *)
- sym_az_current_section_entry->entries;
-sym_az_current_section_entry->entries = (sym_entry_type *) section_entry;
-section_entry->entries = id_frame->value.az_symbol_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine saves the source information about where this
-** semi-colon entry ends.
-**
-** FORMAL PARAMETERS:
-**
-** semi_frame the token frame for the terminating semi-colon
-** for this entry.
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_current_section_entry global pointer to the
-** "current" section list
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_save_src_semicolon_pos (semi_frame)
-
-yystype * semi_frame;
-
-{
-sym_section_entry_type * section_entry;
-
-section_entry = (sym_section_entry_type *)
- sym_az_current_section_entry->entries;
-_sar_save_source_pos (§ion_entry->entries->header, semi_frame);
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function saves the title end source for lists (i.e. "ARGUMENTS",
-** "CALLBACKS", "PROCEDURES", and "CONTROLS"). The source saved here
-** should be "}" or posibly an id_ref.
-**
-** PARAMETERS:
-**
-** close_frame ptr to token frame for the closing source
-**
-** IMPLICIT INPUTS:
-**
-** the "current" list on the frame stack as returned by sem_find_object
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**--
-**/
-
-void sar_save_list_end (close_frame)
-
-yystype *close_frame;
-
-{
- sym_list_entry_type * list_entry;
- yystype * list_frame;
-
- /*
- ** Search the syntax stack for the object frame.
- */
-
- list_frame = sem_find_object (close_frame - 1);
- list_entry = (sym_list_entry_type *) list_frame->value.az_symbol_entry;
-
- _sar_save_source_pos ( &list_entry->header , close_frame );
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function saves the end source for just about any type
-** of entry.
-**
-** PARAMETERS:
-**
-** close_frame ptr to token frame for the closing source (probably
-** a semi-colon).
-**
-** IMPLICIT INPUTS:
-**
-** the "current" list on the frame stack as returned by sem_find_object
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**--
-**/
-
-void sar_save_src_entry_end (close_frame, entry_frame)
-
-yystype *close_frame;
-yystype *entry_frame;
-
-{
- sym_entry_type * entry;
-
- /*
- ** Extract the entry from the frame.
- */
-
- entry = (sym_entry_type *) entry_frame->value.az_symbol_entry;
-
- /*
- ** Case on the type of entry (source gets put in a different spot for
- ** control entries).
- */
-
- if (entry->header.b_tag == sym_k_control_entry)
- {
- sym_control_entry_type *control_entry = (sym_control_entry_type *)entry;
-
- _sar_save_source_pos (&control_entry->az_con_obj->header, close_frame);
- }
-
- /*
- ** Save the source info in the default place
- */
-
- _sar_save_source_pos ( &entry->header , close_frame );
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine sets flags in the stack entry for the object.
-**
-** FORMAL PARAMETERS:
-**
-** current_frame address of the current syntax stack frame
-**
-** mask mask of flags to be set.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_set_object_flags
-
- (yystype *current_frame, unsigned char mask )
-
-{
-
- sym_obj_entry_type * obj_entry;
- yystype * object_frame;
-
-/* Search the syntax stack for the object frame. */
-
- object_frame = sem_find_object (current_frame - 1);
- obj_entry = (sym_obj_entry_type *) object_frame->value.az_symbol_entry;
-
-/* Set the flags for the object entry. */
-
- obj_entry->obj_header.b_flags |= mask;
-
-/* If this is an exported or private object and it has a name,
-** make an external entry for it.
-*/
-
- if ((mask & (sym_m_exported | sym_m_private)) &&
- (obj_entry->obj_header.az_name != NULL))
- {
- sym_make_external_def (obj_entry->obj_header.az_name);
- }
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine unsets flags in the stack entry for the object.
-**
-** FORMAL PARAMETERS:
-**
-** current_frame address of the current syntax stack frame
-**
-** mask mask of flags to be unset.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_unset_object_flags
-
- (yystype *current_frame, unsigned char mask )
-
-{
- yystype * object_frame;
-
-/* Search the syntax stack for the object frame. */
-
- object_frame = sem_find_object (current_frame - 1);
-
-/* Unset the flags for the object entry. */
-
- object_frame->b_flags &= ~mask;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine sets the type in the stack entry for the (list) object.
-**
-** FORMAL PARAMETERS:
-**
-** current_frame address of the current syntax stack frame
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_set_list_type
- ( current_frame )
-
-yystype * current_frame;
-
-{
-
- sym_obj_entry_type * obj_entry;
- yystype * list_frame;
-
-/* Search the syntax stack for the list frame. */
- list_frame = sem_find_object (current_frame-1);
- obj_entry = (sym_obj_entry_type *) list_frame->value.az_symbol_entry;
-
-/* Set the type for the list entry. */
- obj_entry->header.b_type = current_frame->b_type;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine sets the type in the stack entry for the (widget) object.
-**
-** FORMAL PARAMETERS:
-**
-** current_frame address of the current syntax stack frame
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_set_object_class
- ( current_frame )
-
-yystype * current_frame;
-
-{
-
- sym_obj_entry_type * obj_entry;
- yystype * object_frame;
-
-/* Search the syntax stack for the object frame. */
- object_frame = sem_find_object (current_frame-1);
- obj_entry = (sym_obj_entry_type *) object_frame->value.az_symbol_entry;
-
-/* Set the type for the object entry. */
- obj_entry->header.b_type =
- current_frame->value.az_keyword_entry->b_subclass;
-
-/*
-** Indicate in compression table that this object type is used.
-** Note that user defined widgets don't get compression code entires.
-** We always identify user defined widgets as MrmwcUnknown.
-*/
- if ( obj_entry->header.b_type != uil_sym_user_defined_object )
- uil_widget_compr[obj_entry->header.b_type] = 1;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine sets the variant in the stack entry for the object.
-**
-** FORMAL PARAMETERS:
-**
-** current_frame address of the current syntax stack frame
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_set_object_variant
- ( current_frame )
-
-yystype * current_frame;
-
-{
-
- sym_obj_entry_type * obj_entry;
- yystype * object_frame;
-
-/* Search the syntax stack for the object frame. */
-
- object_frame = sem_find_object (current_frame - 1);
- obj_entry = (sym_obj_entry_type *) object_frame->value.az_symbol_entry;
-
-/* Set the variant for the object entry. */
-
- switch (current_frame->b_type)
- {
-
-/* Use the module default for this object type. */
- case 0:
- {
- unsigned int obj_type;
-
- /*
- * Pick up gadget variant (or widget variant) as specified
- * by the module tables and the gadget variants
- */
- obj_type = obj_entry->header.b_type;
- if (uil_urm_variant[obj_type] == sym_k_gadget_entry)
- {
- obj_entry->obj_header.b_flags |= sym_m_obj_is_gadget;
- obj_entry->header.b_type = uil_gadget_variants [obj_type];
- }
-
- break;
- }
-
- case sym_k_widget_entry:
- break;
-
- case sym_k_gadget_entry:
- {
- unsigned int obj_type;
-
- /*
- * Check if gadgets are supported for this object type.
- * If so, change the object type to the matching code for
- * the widget class which is the gadget.
- */
- obj_type = obj_entry->header.b_type;
- if (uil_gadget_variants[obj_type] == 0)
- {
- yystype * source_frame;
-
- source_frame = & yylval;
- diag_issue_diagnostic
- (d_gadget_not_sup,
- _sar_source_position (source_frame ),
- diag_object_text(obj_type),
- diag_object_text(obj_type) );
- }
- else
- {
- obj_entry->obj_header.b_flags |= sym_m_obj_is_gadget;
- obj_entry->header.b_type = uil_gadget_variants [obj_type];
- }
-
- break;
- }
-
- default:
- _assert (FALSE, "unexpected variant type");
- break;
- }
-
- /*
- ** If this object is a gadget, mark that gadgets of this type have been
- ** used so we can later assign it a compression code. This is a safety
- ** set against the actual widget class.
- */
-
- if ((obj_entry->obj_header.b_flags & sym_m_obj_is_gadget) != 0)
- uil_widget_compr[obj_entry->header.b_type] = 1;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine finds the object frame on the parse stack.
-**
-** FORMAL PARAMETERS:
-**
-** current_frame address of the current parse stack frame.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** address of the parse stack frame for this object.
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-yystype * sem_find_object ( current_frame )
-
-yystype * current_frame;
-
-{
-
- yystype * object_frame;
-
- object_frame = current_frame;
-
-/* Search the syntax stack for the object frame. */
-
- while ( (object_frame->b_tag != sar_k_object_frame) &&
- (object_frame->b_tag != sar_k_module_frame) )
- object_frame--;
-
- if (object_frame->b_tag != sar_k_object_frame)
- _assert (FALSE, "missing object frame on the parser stack");
-
- return (object_frame);
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine processes a reference to an object in the
-** UIL. The reference may be a forward reference.
-**
-** FORMAL PARAMETERS:
-**
-** ref_frame address of the parse stack frame for
-** the object reference.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_object_reference ( ref_frame )
-yystype * ref_frame;
-
-{
- yystype * obj_frame;
- sym_obj_entry_type * obj_entry;
- sym_name_entry_type * ref_name;
- sym_obj_entry_type * ref_entry;
- sym_value_entry_type * ref_value;
- boolean invalid_ref;
-
- yystype * source_frame;
-
- source_frame = & yylval;
-
-/* Search the syntax stack for the object frame. */
-
- obj_frame = sem_find_object (ref_frame - 1);
- obj_entry = (sym_obj_entry_type *) obj_frame->value.az_symbol_entry;
- ref_name = (sym_name_entry_type *) ref_frame->value.az_symbol_entry;
- ref_value = (sym_value_entry_type *) ref_name->az_object;
- ref_entry = (sym_obj_entry_type *) ref_name->az_object;
-
-/* Check if this name was previously defined for a different usage. */
-
- if (ref_entry != NULL)
- {
- if ( ref_entry->header.b_tag==sym_k_widget_entry ||
- ref_entry->header.b_tag==sym_k_gadget_entry ||
- ref_entry->header.b_tag==sym_k_child_entry )
- invalid_ref =
- (ref_entry->header.b_tag!=obj_entry->header.b_tag) ||
- ((ref_entry->header.b_type!=obj_entry->header.b_type) &&
- (uil_gadget_variants[ref_entry->header.b_type]!=
- obj_entry->header.b_type) &&
- (uil_gadget_variants[obj_entry->header.b_type]!=
- ref_entry->header.b_type));
- else
- invalid_ref =
- (ref_entry->header.b_tag!=obj_entry->header.b_tag) ||
- (ref_entry->header.b_type!=obj_entry->header.b_type);
-
- if ( invalid_ref )
- {
-
- char * expected_type, * found_type;
-
- if (ref_entry->header.b_tag == sym_k_list_entry)
- found_type = diag_tag_text (ref_entry->header.b_type);
- else if (ref_entry->header.b_tag == sym_k_widget_entry)
- found_type = diag_object_text (ref_entry->header.b_type);
- else if (ref_entry->header.b_tag == sym_k_gadget_entry)
- found_type = diag_object_text (ref_entry->header.b_type);
- else if (ref_entry->header.b_tag == sym_k_value_entry)
- found_type = diag_value_text
- (((sym_value_entry_type *) ref_entry)->b_type);
- else
- found_type = "";
-
- if (obj_entry->header.b_tag == sym_k_list_entry)
- expected_type =
- diag_tag_text (obj_entry->header.b_type);
- else
- expected_type =
- diag_object_text (obj_entry->header.b_type);
-
- diag_issue_diagnostic
- ( d_obj_type,
- _sar_source_position ( source_frame ),
- found_type,
- diag_tag_text (ref_entry->header.b_tag),
- expected_type,
- diag_tag_text (obj_entry->header.b_tag) );
-
- obj_entry->header.b_tag = sym_k_error_entry;
-
- return;
- }
- }
-
- switch (obj_entry->header.b_tag)
- {
-
- case sym_k_list_entry:
- {
-
- /* Add this entry to the list. A copy of the list will be made. */
-
- if ((ref_value != 0) &&
- ((ref_value->obj_header.b_flags & sym_m_forward_ref) == 0))
- {
- ref_frame->value.az_symbol_entry = (sym_entry_type *)ref_entry;
- sar_add_list_entry (ref_frame);
- }
- else
- sar_add_forward_list_entry (ref_frame);
-
- break;
- }
-
- case sym_k_gadget_entry:
- case sym_k_widget_entry:
- {
- int make_fwd_ref;
-
- /* Mark the widget as referenced. */
-
- ref_name->b_flags |= sym_m_referenced;
-
- /* Mark the referencing object */
-
- obj_entry->obj_header.b_flags |= sym_m_obj_is_reference;
-
- /* Forward references are allowed for widgets or gadgets. */
-
- if (ref_entry == NULL)
- make_fwd_ref = TRUE;
- else
- {
-
- /* A widget can reference itself; treat it as a forward reference. */
-
- if (ref_entry->obj_header.b_flags & sym_m_def_in_progress)
- make_fwd_ref = TRUE;
- else
- make_fwd_ref = FALSE;
- }
-
- if (make_fwd_ref)
- {
- /* Add forward reference entry for this widget. */
-
- sym_make_forward_ref
- (ref_frame,
- obj_entry->header.b_type,
- (char*)& obj_entry->obj_header.az_reference );
- }
- else
- {
- /* Save this reference in the widget. */
-
- obj_entry->obj_header.az_reference = (sym_entry_type *)ref_entry;
- }
-
- break;
- }
-
- default:
- {
- _assert (FALSE, "unexpected object reference type");
- break;
- }
- }
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine updates the parent list of every object in the controls
-** list(s) for this object. Parent lists are required in order to check
-** constraint arguments.
-**
-** FORMAL PARAMETERS:
-**
-** control_list_frame address of the parse stack frame for
-** the control list.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_update_parent_list
- ( control_list_frame )
-
-yystype * control_list_frame;
-
-{
- yystype * widget_frame;
- sym_widget_entry_type * widget_entry;
- sym_list_entry_type * control_list_entry;
-
-/* Search the syntax stack for the widget frame. */
-
- widget_frame = sem_find_object (control_list_frame - 1);
- widget_entry = (sym_widget_entry_type *)
- widget_frame->value.az_symbol_entry;
-
- _assert (widget_entry->header.b_tag == sym_k_widget_entry ||
- widget_entry->header.b_tag == sym_k_gadget_entry ||
- widget_entry->header.b_tag == sym_k_child_entry,
- "widget missing from the stack");
-
-/* Get the control_list entry from the widget */
-
- control_list_entry = (sym_list_entry_type *)
- control_list_frame->value.az_symbol_entry;
-
- _assert ((control_list_entry->header.b_tag == sym_k_list_entry ||
- control_list_entry->header.b_tag == sym_k_error_entry),
- "list entry missing");
-
-/* The control list contains control list entries as well as nested lists,
-** which in turn contain list entries and nested lists.
-** We need to call a recursive routine to traverse all the entries.
-*/
-
- parent_list_traverse(widget_entry, control_list_entry);
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine recursively traverses a control_list. Control lists
-** may contain control list entries as well as nested control lists.
-**
-** This routine also updates the parent list of every object in the
-** controls list(s) for this object. Parent lists are required in order
-** to check constraint arguments.
-**
-** FORMAL PARAMETERS:
-**
-** widget_entry the widget to be entered in lists
-** control_list_entry A control_list or nested control list
-**
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void parent_list_traverse (widget_entry, control_list_entry)
- sym_widget_entry_type *widget_entry;
- sym_list_entry_type *control_list_entry;
-
-{
-sym_obj_entry_type *control_list_member;
-sym_control_entry_type *control_entry;
-sym_nested_list_entry_type *nested_control_list_entry;
-sym_widget_entry_type *control_widget;
-int found;
-sym_forward_ref_entry_type *fwd_ref_entry;
-sym_parent_list_type *parent_node;
-sym_parent_list_type *parent_ptr;
-
-
- for (control_list_member = (sym_obj_entry_type *)control_list_entry ->
- obj_header.az_next;
- control_list_member != NULL;
- control_list_member = (sym_obj_entry_type *)control_list_member ->
- obj_header.az_next)
- {
- switch (control_list_member->header.b_tag)
- {
- case sym_k_nested_list_entry:
- nested_control_list_entry = (sym_nested_list_entry_type *)
- control_list_member;
- /* Begin fixing DTS 9497 */
- if(nested_control_list_entry->az_list)
- parent_list_traverse (widget_entry,
- nested_control_list_entry->az_list);
- /* End fixing DTS 9497 */
- break;
- case sym_k_control_entry:
- control_entry = (sym_control_entry_type *) control_list_member;
-
-/* Get a pointer to one of the actual widgets in the control list */
-
- control_widget = control_entry->az_con_obj;
-
-/*
-** If it's a widget reference, go find it. If you can't find it, it must
-** be a forward reference. If so, find the forward reference entry for it
-** and update it with a pointer to its parent.
-*/
-
- if ( control_widget->
- obj_header.b_flags & sym_m_obj_is_reference)
- if ( control_widget->obj_header.az_reference == NULL )
- {
-
-/* Forward reference. Update forward reference entry. */
-
- found = FALSE;
- for (fwd_ref_entry = sym_az_forward_ref_chain;
- ((fwd_ref_entry != NULL) && (found == FALSE));
- fwd_ref_entry = fwd_ref_entry->az_next_ref)
- {
- if (fwd_ref_entry->a_update_location ==
- (char *) & control_widget->
- obj_header.az_reference)
- {
- found = TRUE;
- fwd_ref_entry->parent = widget_entry;
- }
- }
- }
- else
- {
-/* A widget reference, but already defined. Go update its entry. */
-
- control_widget = (sym_widget_entry_type *)
- control_widget->obj_header.az_reference;
- found = FALSE;
- for (parent_ptr = control_widget->parent_list;
- ((parent_ptr != NULL) && (found == FALSE));
- parent_ptr = parent_ptr->next)
- {
- if (parent_ptr->parent == widget_entry)
- found = TRUE;
- }
- if (found == FALSE)
- {
- parent_node = (sym_parent_list_type *)
- sem_allocate_node (sym_k_parent_list_entry,
- sym_k_parent_list_size);
- parent_node->next = control_widget->parent_list;
- control_widget->parent_list = parent_node;
- parent_node->parent = widget_entry;
- }
- }
- else
- {
-/* An inline widget definition. Go update its entry. */
-
- found = FALSE;
- for (parent_ptr = control_widget->parent_list;
- ((parent_ptr != NULL) && (found == FALSE));
- parent_ptr = parent_ptr->next)
- {
- if (parent_ptr->parent == widget_entry)
- found = TRUE;
- }
- if (found == FALSE)
- {
- parent_node = (sym_parent_list_type *)
- sem_allocate_node (sym_k_parent_list_entry,
- sym_k_parent_list_size);
- parent_node->next = control_widget->parent_list;
- control_widget->parent_list = parent_node;
- parent_node->parent = widget_entry;
- }
- }
- }
- }
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine saves a widget feature in the widget symbol node.
-**
-** FORMAL PARAMETERS:
-**
-** feature_frame address of the parse stack frame for
-** the widget feature.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_save_feature
- ( feature_frame )
-
-yystype * feature_frame;
-
-{
- yystype * widget_frame;
- sym_widget_entry_type * widget_entry;
- sym_entry_type * feature_entry;
- sym_entry_type * * ptr;
-
- yystype * source_frame;
-
- source_frame = & yylval;
-
-/* Search the syntax stack for the widget frame. */
-
- widget_frame = sem_find_object (feature_frame - 1);
- widget_entry = (sym_widget_entry_type *)
- widget_frame->value.az_symbol_entry;
-
- _assert (widget_entry->header.b_tag == sym_k_widget_entry ||
- widget_entry->header.b_tag == sym_k_gadget_entry ||
- widget_entry->header.b_tag == sym_k_child_entry,
- "widget missing from the stack");
-
- feature_entry = feature_frame->value.az_symbol_entry;
-
- _assert ((feature_entry->header.b_tag == sym_k_list_entry ||
- feature_entry->header.b_tag == sym_k_error_entry),
- "list entry missing");
-
- switch (feature_entry->header.b_type)
- {
-
- case sym_k_argument_entry:
- ptr = (sym_entry_type * *) & widget_entry->az_arguments;
- break;
-
- case sym_k_control_entry:
- ptr = (sym_entry_type * *) & widget_entry->az_controls;
- break;
-
- case sym_k_callback_entry:
- ptr = (sym_entry_type * *) & widget_entry->az_callbacks;
- break;
-
- case sym_k_error_entry:
- return;
-
- default:
- _assert (FALSE, "unexpected widget feature");
- break;
- }
-
-/* Check for duplicate features. */
-
- if (* ptr != NULL)
- {
- diag_issue_diagnostic
- ( d_dup_list,
- _sar_source_position ( source_frame ),
- diag_tag_text (feature_entry->header.b_type),
- diag_tag_text (feature_entry->header.b_tag),
- diag_object_text (widget_entry->header.b_type),
- diag_tag_text (widget_entry->header.b_tag) );
-
- return;
- }
-
-/* Save the feature in the widget. */
-
- (* ptr) = feature_entry;
-
-/* Clear the feature frame from the stack. */
-
- feature_frame->b_tag = sar_k_null_frame;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine processes an argument pair for an object.
-**
-** FORMAL PARAMETERS:
-**
-** argument_frame address of the parse stack frame for
-** the argument reference.
-**
-** value_frame address of the parse stack frame for
-** the argument value.
-**
-** equals_frame address of the parse stack frame for the
-** equals sign.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-void sar_save_argument_pair
- ( argument_frame, value_frame, equals_frame)
-
-yystype * argument_frame;
-yystype * value_frame;
-yystype * equals_frame;
-
-{
-
- yystype * object_frame;
- sym_argument_entry_type * arg_entry;
- sym_list_entry_type * list_entry;
- sym_value_entry_type * val_value_entry;
- sym_value_entry_type * arg_value_entry;
- unsigned char actual_tag;
-
- yystype * source_frame;
-
-
- source_frame = & yylval;
-
-/* Search the syntax stack for the object frame. */
-
- object_frame = sem_find_object (argument_frame - 1);
-
- list_entry = (sym_list_entry_type *)
- object_frame->value.az_symbol_entry;
-
- _assert (list_entry->header.b_tag == sym_k_list_entry,
- "list entry missing");
-
- arg_value_entry =
- (sym_value_entry_type *) argument_frame->value.az_symbol_entry;
-
- _assert (arg_value_entry->header.b_tag == sym_k_value_entry,
- "argument value entry missing");
-
- /*
- ** Save the source information (?)
- */
-
- _sar_save_source_info ( &arg_value_entry->header , argument_frame ,
- argument_frame );
-
- val_value_entry = (sym_value_entry_type *) value_frame->value.az_symbol_entry;
- actual_tag = val_value_entry->header.b_tag;
-
-/* Create and fill in the argument node. */
-
- arg_entry = (sym_argument_entry_type *) sem_allocate_node (
- sym_k_argument_entry, sym_k_argument_entry_size);
-
- /*
- ** If the argument is a forward reference, we'll patch in the
- ** address of the the referenced arg between passes. Otherwise,
- ** just point to the referenced arg node.
- */
-
- if ((argument_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (argument_frame,
- (char*)&(arg_entry->az_arg_name), sym_k_patch_add);
- else
- arg_entry->az_arg_name =
- (sym_value_entry_type *) argument_frame->value.az_symbol_entry;
-
- /*
- ** If the argument value is a forward reference, we'll patch in the
- ** address of the the referenced arg value between passes. Otherwise,
- ** just point to the referenced arg value node.
- */
-
- if ((value_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (value_frame,
- (char*)&(arg_entry->az_arg_value), sym_k_patch_add);
- else
- arg_entry->az_arg_value = val_value_entry;
-
- argument_frame->b_tag = sar_k_null_frame;
- argument_frame->value.az_symbol_entry = (sym_entry_type *) arg_entry;
-
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine processes a reason to procedure or procedure list binding
-** for a callback object in UIL.
-**
-** FORMAL PARAMETERS:
-**
-** reason_frame address of the parse stack frame for
-** the reason reference.
-**
-** proc_ref_frame address of the parse stack frame for
-** the procedure reference.
-**
-** equals_frame address if the parse stack frame for
-** the equals sign.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_save_reason_binding
- ( reason_frame, proc_ref_frame, equals_frame )
-
-yystype * reason_frame;
-yystype * proc_ref_frame;
-yystype * equals_frame;
-
-{
-
- yystype * object_frame;
- sym_callback_entry_type * callback_entry;
- sym_list_entry_type * list_entry;
- yystype * source_frame;
-
- source_frame = & yylval;
-
-/* Search the syntax stack for the object frame. */
-
- object_frame = sem_find_object (reason_frame - 1);
-
- list_entry = (sym_list_entry_type *) object_frame->value.az_symbol_entry;
-
- _assert (list_entry->header.b_tag == sym_k_list_entry,
- "list entry missing");
-
- /*
- ** Create and fill in the callback node.
- */
-
- callback_entry = (sym_callback_entry_type *) sem_allocate_node (
- sym_k_callback_entry, sym_k_callback_entry_size);
-
- /*
- ** If the reason is a forward reference, we'll patch in the
- ** address of the the referenced reason between passes. Otherwise,
- ** just point to the referenced reason node.
- */
-
- if ((reason_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (reason_frame,
- (char*)&(callback_entry->az_call_reason_name), sym_k_patch_add);
- else
- callback_entry->az_call_reason_name =
- (sym_value_entry_type *) reason_frame->value.az_symbol_entry;
-
-
- /*
- ** Save source information
- */
-/* _sar_save_source_info ( &reason_value_entry->header , reason_frame ,
-** reason_frame );
-*/
-
- /*
- ** Note that proc_ref_frame may point to either a procedure reference
- ** or to a list of procedure reference nodes
- */
-
- if ( proc_ref_frame->b_type == sym_k_list_entry)
- callback_entry->az_call_proc_ref_list =
- (sym_list_entry_type *) proc_ref_frame->value.az_symbol_entry;
- else
- callback_entry->az_call_proc_ref =
- (sym_proc_ref_entry_type *) proc_ref_frame->value.az_symbol_entry;
-
- reason_frame->b_tag = sar_k_null_frame;
- reason_frame->value.az_symbol_entry = (sym_entry_type *) callback_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine processes a control clause.
-**
-** FORMAL PARAMETERS:
-**
-** managed_frame address of the parse stack frame for
-** the managed flag for this control.
-**
-** item_frame address of the parse stack frame for
-** the control item object.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_save_control_item
- ( managed_frame, item_frame )
-
-yystype * managed_frame;
-yystype * item_frame;
-
-{
-
- yystype * object_frame;
- sym_control_entry_type * control_entry;
- sym_list_entry_type * list_entry;
- yystype * source_frame;
-
- source_frame = & yylval;
-
-/* Search the syntax stack for the object frame. */
-
- object_frame = sem_find_object (managed_frame - 1);
-
- list_entry =
- (sym_list_entry_type *) object_frame->value.az_symbol_entry;
-
- _assert (list_entry->header.b_tag == sym_k_list_entry,
- "list entry missing");
-
-/* Verify that this type of item is allowed on this list. */
-
- if (list_entry->header.b_type != sym_k_control_entry)
- {
- diag_issue_diagnostic
- ( d_list_item,
- _sar_source_position ( source_frame ),
- diag_tag_text (sym_k_control_entry),
- diag_tag_text (list_entry->header.b_type),
- diag_tag_text (list_entry->header.b_tag) );
-
- return;
- }
-
-/* Create and fill in the control node. */
-
- control_entry = (sym_control_entry_type *) sem_allocate_node (
- sym_k_control_entry, sym_k_control_entry_size);
-
- control_entry->az_con_obj =
- (sym_widget_entry_type *) item_frame->value.az_symbol_entry;
-
- control_entry->obj_header.b_flags = ( item_frame->b_flags |
- managed_frame->b_flags );
-
- managed_frame->b_tag =
- item_frame->b_tag = sar_k_null_frame;
-
- managed_frame->value.az_symbol_entry = (sym_entry_type *) control_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine processes a control clause when an id is created in that
-** clause.
-**
-** FORMAL PARAMETERS:
-**
-** control_frame address of the parse stack frame for
-** the control list.
-**
-** item_frame address of the parse stack frame for
-** the control item id.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_save_control_widget
- ( control_frame, item_frame )
-
-yystype * control_frame;
-yystype * item_frame;
-
-{
-
- yystype * object_frame;
- sym_control_entry_type * control_entry;
- sym_list_entry_type * list_entry;
- yystype * source_frame;
- yystype temp_frame;
-
- /*
- ** move the item_frame to the control_frame and
- ** the control_frame to the null_frame. This is done
- ** because the item_frame needs to be second in the list
- */
-
- temp_frame = *item_frame;
- *item_frame = *control_frame;
- *control_frame = temp_frame;
-
- source_frame = & yylval;
-
-/* Search the syntax stack for the object frame. */
-
- object_frame = sem_find_object (control_frame - 1);
-
- list_entry =
- (sym_list_entry_type *) object_frame->value.az_symbol_entry;
-
- _assert (list_entry->header.b_tag == sym_k_list_entry,
- "list entry missing");
-
-/* Verify that this type of item is allowed on this list. */
-
- if (list_entry->header.b_type != sym_k_control_entry)
- {
- diag_issue_diagnostic
- ( d_list_item,
- _sar_source_position ( source_frame ),
- diag_tag_text (sym_k_control_entry),
- diag_tag_text (list_entry->header.b_type),
- diag_tag_text (list_entry->header.b_tag) );
-
- return;
- }
-
-/* Create and fill in the control node. */
-
- control_entry = (sym_control_entry_type *) sem_allocate_node
- (sym_k_control_entry, sym_k_control_entry_size);
-
- control_entry->az_con_obj =
- (sym_widget_entry_type *) item_frame->value.az_symbol_entry;
-
- control_entry->obj_header.b_flags = item_frame->b_flags;
-
- control_frame->b_tag =
- item_frame->b_tag = sar_k_null_frame;
-
- control_frame->value.az_symbol_entry = (sym_entry_type *) control_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine saves the source for a user defined create procedure
-**
-** FORMAL PARAMETERS:
-**
-** procedure_frame address of the parse stack frame for
-** the text "PROCEDURE".
-**
-** proc_id_frame address of the parse stack frame for
-** the procedure reference.
-**
-** proc_arg_frame address of the parse stack frame for
-** the procedure argument value.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_save_user_proc_ref_src
- ( procedure_frame, proc_id_frame, proc_arg_frame)
-
-yystype * procedure_frame;
-yystype * proc_id_frame;
-yystype * proc_arg_frame;
-
-{
- sym_proc_ref_entry_type * proc_ref_entry;
-
- proc_ref_entry = (sym_proc_ref_entry_type *)proc_id_frame->value.az_symbol_entry;
-
- /*
- ** If the parameter arg clause was ommitted the source info should be null.
- ** We want to save the source for the "args" if it is there.
- */
- _sar_save_source_info (& proc_ref_entry->header, procedure_frame, proc_arg_frame );
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine processes a procedure reference.
-**
-** FORMAL PARAMETERS:
-**
-** proc_id_frame address of the parse stack frame for
-** the procedure reference.
-**
-** proc_arg_frame address of the parse stack frame for
-** the procedure argument value.
-**
-** context indicates whether this is a callback
-** or a user-defined procedure reference.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_process_proc_ref
- ( proc_id_frame, proc_arg_frame, context )
-
-yystype * proc_id_frame;
-yystype * proc_arg_frame;
-int context;
-
-{
-
-/* Call the common routine to get the procedure reference node, and
- return it in the stack frame. */
-
- proc_id_frame->value.az_symbol_entry = (sym_entry_type *)
- sem_reference_procedure (
- proc_id_frame, proc_arg_frame,
- context );
-
-/* If this is the create proc for a user_defined widget, save it
- in the object node. */
-
- if (context == sym_k_object_proc)
- {
- yystype * widget_frame;
- sym_widget_entry_type * widget_entry;
-
-/* Search the syntax stack for the widget frame. NOTE: gadgets can
- not have creation procedures; the grammar enforces this. */
-
- widget_frame = sem_find_object (proc_id_frame - 1);
- widget_entry =
- (sym_widget_entry_type *) widget_frame->value.az_symbol_entry;
-
- _assert (widget_entry->header.b_tag == sym_k_widget_entry,
- "widget missing from the stack");
-
- if (widget_entry->header.b_type != uil_sym_user_defined_object)
- {
- yystype * source_frame;
-
- source_frame = & yylval;
- diag_issue_diagnostic
- (d_create_proc,
- _sar_source_position ( source_frame ),
- diag_object_text (widget_entry->header.b_type) );
-
- return;
- }
- else
- {
- widget_entry->az_create_proc =
- (sym_proc_ref_entry_type *) proc_id_frame->value.az_symbol_entry;
- }
-
- }
-
- return;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine adds an entry to a list.
-**
-** FORMAL PARAMETERS:
-**
-** entry_frame address of the parse stack frame for
-** the entry to be added to the list.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_add_list_entry
- ( entry_frame )
-
-yystype * entry_frame;
-
-{
- yystype * list_frame;
- sym_list_entry_type * list_entry;
- sym_obj_entry_type * entry_entry;
-
- yystype * source_frame;
-
- source_frame = & yylval;
-
-/* Search the syntax stack for the list frame. */
-
- list_frame = sem_find_object (entry_frame - 1);
- list_entry = (sym_list_entry_type *) list_frame->value.az_symbol_entry;
-
- _assert (list_entry->header.b_tag == sym_k_list_entry,
- "list entry missing");
-
- entry_entry = (sym_obj_entry_type *) entry_frame->value.az_symbol_entry;
-
- /*
- ** If we are including a list within a list, put a nested list entry
- ** in the list, and point it to the actual list.
- */
-
- if (entry_entry->header.b_tag == sym_k_list_entry)
- {
- sym_nested_list_entry_type *nested_entry;
-
- /*
- ** If this list is a reference to a previously defined list,
- ** then use the previously defined list.
- */
- if (entry_entry->obj_header.az_reference != NULL)
- {
- entry_entry = (sym_obj_entry_type *)
- entry_entry->obj_header.az_reference;
- _assert (entry_entry->header.b_tag == sym_k_list_entry,
- "entry list entry missing");
- }
-
- /*
- ** Create a nested list entry to reference the nested list. This
- ** becomes the entry which will be added to the current list.
- */
- nested_entry = (sym_nested_list_entry_type *)
- sem_allocate_node (sym_k_nested_list_entry,
- sym_k_nested_list_entry_size);
- nested_entry->header.b_type = entry_entry->header.b_type;
- nested_entry->az_list = (sym_list_entry_type *) entry_entry;
- entry_entry = (sym_obj_entry_type *) nested_entry;
- }
- else
- if (entry_entry->header.b_tag == sym_k_name_entry)
- {
- sym_nested_list_entry_type *nested_entry;
- /*
- ** This is a forward reference to a named, nested list.
- */
- nested_entry = (sym_nested_list_entry_type *)
- sem_allocate_node (sym_k_nested_list_entry,
- sym_k_nested_list_entry_size);
-
- sym_make_value_forward_ref (entry_frame,
- (char*)&(nested_entry->az_list),
- sym_k_patch_list_add);
-
- entry_entry = (sym_obj_entry_type *) nested_entry;
- }
-
- /*
- ** Add the entry to front of the list
- ** The nested entry created above is included in this processing.
- */
- entry_entry->obj_header.az_next =
- (sym_entry_type *) list_entry->obj_header.az_next;
- list_entry->obj_header.az_next =
- (sym_entry_type *) entry_entry;
- list_entry->w_count++;
-
- entry_frame->b_tag = sar_k_null_frame;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine adds a forward referenced list entry to a list.
-**
-**
-** FORMAL PARAMETERS:
-**
-** entry_frame address of the parse stack frame for
-** the entry to be added to the list.
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_add_forward_list_entry
- ( entry_frame )
-
-yystype * entry_frame;
-
-{
- yystype * list_frame;
- sym_list_entry_type * list_entry;
- sym_obj_entry_type * entry_entry;
- sym_name_entry_type * name_entry;
- yystype * source_frame;
- sym_nested_list_entry_type *nested_entry;
-
- source_frame = & yylval;
-
-/* Search the syntax stack for the list frame. */
-
- list_frame = sem_find_object (entry_frame - 1);
- list_entry = (sym_list_entry_type *) list_frame->value.az_symbol_entry;
-
- _assert (list_entry->header.b_tag == sym_k_list_entry,
- "list entry missing");
-
- name_entry = (sym_name_entry_type *) entry_frame->value.az_symbol_entry;
-
- nested_entry = (sym_nested_list_entry_type *)
- sem_allocate_node (sym_k_nested_list_entry,
- sym_k_nested_list_entry_size);
-
- sym_make_value_forward_ref (entry_frame,
- (char*)&(nested_entry->az_list),
- sym_k_patch_list_add);
-
- entry_entry = (sym_obj_entry_type *) nested_entry;
-
- /*
- ** Add the entry to front of the list
- ** The nested entry created above is included in this processing.
- */
- entry_entry->obj_header.az_next =
- (sym_entry_type *) list_entry->obj_header.az_next;
- list_entry->obj_header.az_next =
- (sym_entry_type *) entry_entry;
- list_entry->w_count++;
-
- entry_frame->b_tag = sar_k_null_frame;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine verifies that the list or widget has been defined
-** correctly. Virtually all such validation is actually done in pass 2.
-**
-** FORMAL PARAMETERS:
-**
-** current_frame address of the current syntax stack frame
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_verify_object ( current_frame )
-
-yystype * current_frame;
-
-{
-yystype * obj_frame;
-sym_widget_entry_type * widget_entry;
-unsigned int widget_type;
-sym_obj_entry_type * obj_entry;
-yystype * source_frame;
-
-
-
-/*
- * Search the syntax stack for the object frame.
- */
-source_frame = & yylval;
-obj_frame = sem_find_object (current_frame - 1);
-obj_entry = (sym_obj_entry_type *) obj_frame->value.az_symbol_entry;
-
-switch (obj_entry->header.b_tag)
- {
- case sym_k_gadget_entry:
- case sym_k_widget_entry:
-
- /*
- * Clear the definition in progress bit.
- */
- _assert (obj_entry->obj_header.b_flags & sym_m_def_in_progress,
- "widget definition not in progress");
- obj_entry->obj_header.b_flags &= (~ sym_m_def_in_progress);
- break;
- case sym_k_list_entry:
- /*
- * Clear the definition in progress bit and return.
- */
- _assert (obj_entry->obj_header.b_flags & sym_m_def_in_progress,
- "list definition not in progress");
- obj_entry->obj_header.b_flags &= (~ sym_m_def_in_progress);
- return;
-
- case sym_k_error_entry:
- return;
-
- default:
- _assert (FALSE, "list or widget missing from the stack");
- break;
- }
-
-
-/*
- * If this is a user_defined widget, be sure the create proc was
- * specified if this is a declaration, and not specified if it
- * is a reference.
- */
-widget_entry = (sym_widget_entry_type *) obj_entry;
-widget_type = widget_entry->header.b_type;
-if (widget_type == uil_sym_user_defined_object)
- {
- if ((widget_entry->obj_header.b_flags & sym_m_obj_is_reference) != 0)
- {
- if (widget_entry->az_create_proc != NULL)
- {
- diag_issue_diagnostic
- (d_create_proc_inv,
- _sar_source_pos2(widget_entry),
- diag_object_text (widget_type) );
- widget_entry->header.b_type = sym_k_error_object;
- }
- }
- else
- {
- if (widget_entry->az_create_proc == NULL)
- {
- diag_issue_diagnostic
- (d_create_proc_req,
- _sar_source_pos2(widget_entry),
- diag_object_text (widget_type) );
- widget_entry->header.b_type = sym_k_error_object;
- }
- }
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine allocates a symbol node of the specified size
-** and type.
-**
-** FORMAL PARAMETERS:
-**
-** node_tag tag of node to allocate
-** node_size size of node to allocate
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-**
-** FUNCTION VALUE:
-**
-** the address of the allocated node
-**
-** SIDE EFFECTS:
-**
-** The node is saved in the allocated node list
-**
-**--
-**/
-
-sym_entry_type * sem_allocate_node
- (unsigned char node_tag, unsigned short node_size )
-
-{
-
- sym_entry_type * node_ptr;
-
- node_ptr = (sym_entry_type *) XtCalloc (1, node_size);
- node_ptr->header.w_node_size = node_size;
- node_ptr->header.b_tag = node_tag;
- UrmPlistAppendPointer (sym_az_allocated_nodes, (XtPointer)node_ptr);
-
- return node_ptr;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine puts a symbol node on the free node list.
-**
-** FORMAL PARAMETERS:
-**
-** node_ptr address of node to put on the free list
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void sem_free_node ( node_ptr )
-
-sym_entry_type * node_ptr;
-
-{
-
- UrmPlistAppendPointer (sym_az_freed_nodes, (XtPointer)node_ptr);
-
-}
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: UilSarProc.c /main/12 1995/07/14 09:37:43 drk $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contain the routines for processing procedures.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include "UilDefI.h"
-
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function create the procedure definition entry symbol
-** node a procedure declaration.
-**
-** FORMAL PARAMETERS:
-**
-** id_frame ptr to token frame for the procedure name
-** param_frame ptr to token frame or null frame holding the
-** type of the argument
-** class_frame ptr to frame whose b_flags holds private, etc. info
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_current_section_entry the "current" section list
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** errors may be issued for previously defined name
-**
-**--
-**/
-
-void
-sar_create_procedure(XmConst yystype *id_frame,
- XmConst yystype *param_frame,
- XmConst yystype *class_frame,
- XmConst yystype *semi_frame)
-{
- sym_name_entry_type *name_entry;
- sym_proc_def_entry_type *proc_def_entry;
- sym_section_entry_type *section_entry;
- sym_obj_entry_type *obj_entry;
-
- /*
- ** Call standard routine to check name entry for id_frame.
- ** This routine handles font name, color names, etc used as ids
- */
-
- name_entry = (sym_name_entry_type *) sem_dcl_name( id_frame );
-
- if (name_entry == NULL)
- return;
-
- /*
- ** Allocate the procedure definition entry and fill it in
- */
-
- proc_def_entry = (sym_proc_def_entry_type *)
- sem_allocate_node (sym_k_proc_def_entry, sym_k_proc_def_entry_size);
-
- proc_def_entry->b_widget_type = uil_max_object + 1;
- proc_def_entry->obj_header.az_name = (sym_name_entry_type *) name_entry;
- name_entry->az_object = (sym_entry_type *) proc_def_entry;
-
- /*
- ** Parameter frame has 4 cases:
- ** 1) no argument checking desired
- ** syntax: PROCEDURE id
- ** 2) argument checking desired - no argument
- ** syntax: PROCEDURE id( )
- ** 3) argument checking desired - single argument
- ** syntax: PROCEDURE id( type )
- ** 4) argument checking desired - single typed widget argument
- ** syntax: PROCEDURE id( CLASS_NAME )
- ** These cases are distinguished as follows:
- ** 1) tag = null type = 0
- ** 2) tag = null type = sar_k_no_value
- ** 3) tag = token type = argument type
- ** 4) tag = object type = widget type
- */
-
- proc_def_entry->v_arg_checking = TRUE;
-
- switch (param_frame->b_tag)
- {
- case sar_k_null_frame:
- if (param_frame->b_type == sym_k_no_value )
- {
- proc_def_entry->b_arg_count = 0;
- proc_def_entry->b_arg_type = sym_k_no_value;
- }
- else
- proc_def_entry->v_arg_checking = FALSE;
-
- break;
-
- case sar_k_token_frame:
- proc_def_entry->b_arg_type = param_frame->b_type;
- proc_def_entry->b_arg_count = 1;
- break;
-
- case sar_k_object_frame:
- _assert((param_frame->b_type == sym_k_widget_entry),
- "object frame not widget entry");
-
- obj_entry =
- (sym_obj_entry_type *)param_frame->value.az_symbol_entry;
-
- proc_def_entry->b_arg_type = sym_k_widget_ref_value;
- proc_def_entry->b_arg_count = 1;
- proc_def_entry->b_widget_type = obj_entry->header.b_type;
- break;
-
- default:
- _assert( FALSE, "param frame in error" );
-
- }
-
- /*
- ** Process the class clause
- */
-
- switch (class_frame->b_flags)
- {
- case sym_m_exported:
- sym_make_external_def( name_entry );
-
- case sym_m_private:
- case sym_m_imported:
- break;
-
- default:
- _assert( FALSE, "class frame in error" );
-
- }
-
- proc_def_entry->obj_header.b_flags = class_frame->b_flags;
-
- /*
- ** save the source file info for this procedure entry
- */
- _sar_save_source_info (&proc_def_entry->header, id_frame, semi_frame );
- sar_assoc_comment((sym_obj_entry_type *)proc_def_entry); /* preserve comments */
-
- /*
- ** allocate a section entry to link the proc_def entry into the structure
- */
- section_entry = (sym_section_entry_type *) sem_allocate_node
- (sym_k_section_entry, sym_k_section_entry_size);
-
- /*
- ** Link this entry off of the current section list
- */
- section_entry->next = (sym_entry_type *) sym_az_current_section_entry->entries;
- sym_az_current_section_entry->entries = (sym_entry_type *) section_entry;
-
- section_entry->entries = (sym_entry_type *) proc_def_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function processes a reference to a procedure.
-**
-** FORMAL PARAMETERS:
-**
-** id_frame ptr to token frame for the procedure name
-** value_frame ptr to token frame or null frame holding the
-** value of the argument to the procedure
-** context value indicating how the procedure is being used
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** a procedure reference entry / NULL in case of an illegal reference
-**
-** SIDE EFFECTS:
-**
-** errors may be issued
-**
-**--
-**/
-
-sym_proc_ref_entry_type
-*sem_reference_procedure( yystype *id_frame,
- XmConst yystype *value_frame,
- XmConst int context )
-{
- sym_value_entry_type *value_entry;
- sym_proc_def_entry_type *proc_def_entry;
- sym_proc_ref_entry_type *proc_ref_entry;
-
- /*
- ** Call standard routine to check name entry for id_frame.
- ** This routine handles font name, color names, etc used as ids
- */
-
- proc_def_entry =
- (sym_proc_def_entry_type *)
- sem_ref_name( id_frame, sym_k_proc_def_entry );
-
- switch (value_frame->b_tag)
- {
- case sar_k_null_frame:
- value_entry = NULL;
- break;
-
- case sar_k_value_frame:
- if ((value_frame->b_flags & sym_m_forward_ref) != 0)
- value_entry = NULL;
- else
- value_entry = (sym_value_entry_type *)
- value_frame->value.az_symbol_entry;
- break;
-
- case sar_k_object_frame:
- value_entry =
- (sym_value_entry_type *) value_frame->value.az_symbol_entry;
- break;
-
- default:
- _assert( FALSE, "actual arg in error" );
- }
-
- /*
- ** Allocate the procedure reference entry and fill it in
- */
-
- proc_ref_entry = (sym_proc_ref_entry_type *)
- sem_allocate_node (sym_k_proc_ref_entry, sym_k_proc_ref_entry_size);
-
- if ((id_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (id_frame,
- (char*)&(proc_ref_entry->az_proc_def), sym_k_patch_list_add);
- else
- proc_ref_entry->az_proc_def = proc_def_entry;
-
- if ((value_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (value_frame,
- (char*)&(proc_ref_entry->az_arg_value), sym_k_patch_add);
- else
- proc_ref_entry->az_arg_value = value_entry;
-
- /*
- ** Apply context constraints
- **
- ** If this is a procedure being used as a user object,
- ** it should not have any arguments. The arguments to such
- ** a procedure are always a parent widget id and an argument list.
- ** This constraint is currently inforced by the grammar.
- **
- ** At this time the compiler permits all types of values for callback
- ** arguments. This may be limited shortly when we see if it is
- ** reasonable to pass fonts, colors, reasons, etc.
- */
-
- return proc_ref_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function checks to see if a object is defined with the name
-** corresponding to the id given in the first parameter.
-**
-** FORMAL PARAMETERS:
-**
-** id_frame ptr to a token frame on the parse stack holding the name
-** tag the type of construct needed
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** ptr to a symbol entry for construct or NULL
-**
-** SIDE EFFECTS:
-**
-** error message if the name is undefined or for a different construct
-** forward_ref bit may be turned on in id_frame
-**--
-**/
-
-sym_entry_type
-*sem_ref_name(yystype *id_frame,
- XmConst int tag)
-{
- sym_name_entry_type *name_entry;
- sym_entry_type *symbol_entry;
-
- _assert( id_frame->b_tag == sar_k_token_frame, "arg1 not id frame" );
-
- /*
- ** The id frame may hold a name or the keyword for a font name, color
- ** name, reason name etc. If it is one of these special name, then
- ** we must see if the symbol table holds a name for the special type.
- */
-
- if (id_frame->b_type != NAME)
- {
- name_entry =
- sym_find_name
- ( id_frame->value.az_keyword_entry->b_length,
- id_frame->value.az_keyword_entry->at_name );
-
- if (name_entry == NULL)
- {
- diag_issue_diagnostic
- ( d_undefined,
- _sar_source_position( id_frame ),
- diag_tag_text( sym_k_proc_def_entry ),
- id_frame->value.az_keyword_entry->at_name );
-
- return NULL;
- }
-
- }
- else
- name_entry =
- (sym_name_entry_type *) id_frame->value.az_symbol_entry;
-
- /*
- ** If the name entry already has no object linked from it, we are
- ** referencing an undefined object.
- */
-
- symbol_entry = name_entry->az_object;
-
- if (symbol_entry == NULL )
- {
- id_frame->b_flags |= sym_m_forward_ref;
- return NULL;
- }
- /*
- ** If the name entry has the wrong type of object, this is also
- ** an error.
- */
-
- if (symbol_entry->header.b_tag != tag )
- {
- diag_issue_diagnostic
- ( d_ctx_req,
- _sar_source_position( id_frame ),
- diag_tag_text( tag ),
- diag_tag_text( symbol_entry->header.b_tag ) );
-
- return NULL;
- }
-
- return symbol_entry;
-
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilSarVal.c /main/13 1997/12/06 16:14:16 cshi $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module supports values in UIL. UIL values are
-** quite primitive in terms of operators, however, there is a
-** concept of a private value that is local to this module
-** and a imported or exported value which needs to be
-** resolved via a lookup at runtime. The runtime resolved values
-** cannot be modified with operators.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include <Xm/Xm.h>
-
-#include "UilDefI.h"
-#include "UilSymGen.h" /* For sym_k_[TRUE|FALSE]_enumval */
-/*
-**
-** TABLE OF CONTENTS
-**
-**/
-
-
-/*
-** FORWARD DECLARATIONS
-*/
-
-static sym_value_entry_type *standard_color_table _ARGUMENTS(( void ));
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-#define clear_class_mask \
- (~(sym_m_private | sym_m_imported | sym_m_exported | sym_m_builtin))
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-extern yystype yylval;
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function takes a non-reserved keyword and makes a name
-** entry for it. In the context in which the keyword is used,
-** it is not being used as a keyword.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame pointer to resultant token stack frame
-** keyword_frame pointer to token stack frame holding the keyword
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** a name entry is generated
-**
-**--
-**/
-
-void sar_map_keyword_to_name( target_frame, keyword_frame )
-
-yystype *target_frame;
-yystype *keyword_frame;
-{
- sym_name_entry_type *name_entry;
-
- _assert( keyword_frame->b_tag == sar_k_token_frame,
- "keyword frame missing from stack" );
-
- /*
- ** make the target frame a token frame for a name token
- */
-
- _sar_move_source_info( target_frame, keyword_frame );
- target_frame->b_tag = sar_k_token_frame;
- target_frame->b_type = NAME;
-
- /*
- ** insert the keyword name into the symbol table
- */
-
- name_entry =
- sym_insert_name
- ( keyword_frame->value.az_keyword_entry->b_length,
- keyword_frame->value.az_keyword_entry->at_name );
-
- target_frame->value.az_symbol_entry = (sym_entry_type *) name_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function processes an id that is being used as an operand
-** in a value. It can be either a value or an identifier.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame pointer to resultant value stack frame
-** id_frame pointer to token stack frame holding the id
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error may be issued for undefined name
-**
-**--
-**/
-
-void sar_process_id( target_frame, id_frame )
-
-yystype *target_frame;
-yystype *id_frame;
-{
-
- sym_name_entry_type *name_entry;
- sym_value_entry_type *value_entry;
- int enum_code;
-
- _assert( id_frame->b_tag == sar_k_token_frame,
- "id frame missing from stack" );
-
- /*
- ** make the target frame an expression frame
- */
-
- _sar_move_source_info( target_frame, id_frame );
- target_frame->b_tag = sar_k_value_frame;
-
- /* id frame may be a:
- ** font_name, color_name, reason_name, argument_name...
- ** name
- ** if the font_name, color_name, etc... has a name been defined by
- ** the user, we use that name, otherwise these special names are
- ** treated as private values.
- */
-
- if (id_frame->b_type != NAME)
- {
- name_entry =
- sym_find_name
- ( id_frame->value.az_keyword_entry->b_length,
- id_frame->value.az_keyword_entry->at_name );
-
- if (name_entry == NULL)
- {
- int source_type;
- unsigned short int arg_code;
- unsigned short int rel_code;
-
- switch (id_frame->b_type)
- {
- case FONT_NAME:
- source_type = sym_k_font_value;
- break;
-
- case CHILD_NAME:
- source_type = sym_k_child_value;
- break;
-
- case ARGUMENT_NAME:
- source_type = sym_k_argument_value;
-
- /*
- ** Indicate that this argument is used so we can later
- ** generate appropriate compression code for it.
- ** If this argument has a related argument, also mark it as
- ** being used so we can later generate its comprssion code.
- */
-
- arg_code = id_frame->value.az_keyword_entry->b_subclass;
- uil_arg_compr[arg_code] = 1;
- rel_code = related_argument_table[arg_code];
- if (rel_code != 0)
- uil_arg_compr[rel_code] = 1;
- break;
-
- case COLOR_NAME:
- source_type = sym_k_color_value;
- break;
-
- case REASON_NAME:
- source_type = sym_k_reason_value;
- uil_reas_compr[id_frame->value.az_keyword_entry->b_subclass]
- = 1;
- break;
-
- case ENUMVAL_NAME:
- source_type = sym_k_integer_value;
- enum_code = id_frame->value.az_keyword_entry->b_subclass;
- break;
-
- default:
- _assert( FALSE, "unexpected token" );
- }
-
- value_entry =
- sem_create_value_entry
- ( (char*)&(id_frame->value.az_keyword_entry), sizeof(long),
- source_type );
- if ( id_frame->b_type == ENUMVAL_NAME )
- {
- value_entry->b_enumeration_value_code = enum_code;
- _assert (( (enum_code > 0) && (enum_code <= uil_max_enumval) ),
- "Enumeration code out of range");
- value_entry->value.l_integer =
- enumval_values_table[enum_code];
- }
-
- target_frame->b_flags = value_entry->obj_header.b_flags;
- target_frame->b_type = value_entry->b_type;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) value_entry;
-
- return;
- }
-
- id_frame->value.az_symbol_entry = (sym_entry_type *) name_entry;
- }
-
- /*
- ** first check if the name entry points to a value.
- ** If the value_entry is NULL, this is a forward reference.
- */
-
- name_entry = (sym_name_entry_type *) id_frame->value.az_symbol_entry;
- value_entry = (sym_value_entry_type *) name_entry->az_object;
-
- if (value_entry == NULL)
- {
- value_entry = sem_create_value_entry ("0", 0, sym_k_any_value);
- value_entry->obj_header.b_flags = sym_m_forward_ref;
- value_entry->obj_header.az_name = name_entry;
- target_frame->b_flags = value_entry->obj_header.b_flags;
- target_frame->b_type = value_entry->b_type;
- target_frame->value.az_symbol_entry = (sym_entry_type *) value_entry;
- return;
- }
-
- if (value_entry->header.b_tag != sym_k_value_entry &&
- value_entry->header.b_tag != sym_k_widget_entry)
- {
- diag_issue_diagnostic
- ( d_ctx_req,
- _sar_source_position( id_frame ),
- diag_tag_text( sym_k_value_entry ),
- diag_tag_text( value_entry->header.b_tag ) );
- goto error_path;
- }
-
- /*
- ** set up the target frame
- */
-
- target_frame->b_flags = value_entry->obj_header.b_flags;
- target_frame->b_type = value_entry->b_type;
- target_frame->value.az_symbol_entry = (sym_entry_type *) value_entry;
-
- return;
-
-error_path:
-
- target_frame->b_flags = sym_m_private;
- target_frame->b_type = sym_k_error_value;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) sym_az_error_value_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function checks an identifier and makes a name
-** entry for it if it is not already a name.
-**
-** FORMAL PARAMETERS:
-**
-** id_frame pointer to token stack frame holding the identifier
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** a name entry may be generated
-**
-**--
-**/
-
-void sar_process_id_ref ( id_frame )
-
-yystype * id_frame;
-
-{
-
- _assert( id_frame->b_tag == sar_k_token_frame,
- "id frame missing from stack" );
-
- switch (id_frame->b_type) {
-
- /*
- ** if already a name, then do nothing.
- */
-
- case NAME:
- return;
-
- /*
- ** make the keyword into a name and insert it into the symbol table
- */
-
- case FONT_NAME:
- case ARGUMENT_NAME:
- case COLOR_NAME:
- case REASON_NAME:
- case CHILD_NAME:
-
- id_frame->b_type = NAME;
-
- id_frame->value.az_symbol_entry =
- (sym_entry_type *) sym_insert_name (
- id_frame->value.az_keyword_entry->b_length,
- id_frame->value.az_keyword_entry->at_name );
-
- break;
-
- default:
- _assert( FALSE, "unexpected token" );
- break;
- }
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function takes a parse frame, extracts the string for the token
-** out of it and converts the string into a units type.
-**
-** FORMAL PARAMETERS:
-**
-** parse_frame pointer to parse stack frame holding the value
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-**
-**
-**--
-**/
-
-int sar_get_units_type ( parse_frame )
-
-yystype *parse_frame;
-
-{
- char *units_name;
- int units_type;
- XmParseResult result;
-
- units_name = parse_frame->value.az_keyword_entry->at_name;
- result = XmeParseUnits(units_name, &units_type);
- switch(result)
- {
- case XmPARSE_ERROR:
- /* I don't expect a parse error since the UIL compiler knows what
- the valid unit strings are. */
- units_type = XmPIXELS;
- break;
- case XmPARSE_NO_UNITS:
- /* For now, just set the units to XmPIXELS when none specified.
- What we really need is to be able to specify that there were
- no units and therefore no conversion should be done. We can
- sort of do that by specifying XmPIXELS here. */
- units_type = XmPIXELS;
- break;
- case XmPARSE_UNITS_OK:
- /* Everything is groovy */
- break;
- }
- return(units_type);
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function takes a token frame for a value and converts it
-** into a value frame.
-**
-** FORMAL PARAMETERS:
-**
-** value_frame pointer to resultant value stack frame
-** token_frame pointer to token stack frame holding the value
-** value_type type of value being created
-** keyword_frame frame to use as locator for the value
-** arg_type type of argument value being created - for args only
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-**
-**
-**--
-**/
-
-void sar_make_private_value
- ( value_frame, token_frame, value_type, keyword_frame, arg_type )
-
-yystype *value_frame;
-yystype *token_frame;
-int value_type;
-yystype *keyword_frame;
-int arg_type;
-
-{
- sym_value_entry_type *value_entry;
- /*
- ** This should be a long because the call to sem_create_value_entry passes the sizeof(long). This also
- ** maps on top of value.l_integer which is a long and is used in sar_chk_comp_str_attr.
- */
- long boolean_value;
-
-/* Empty string tables and translation tables can have a null token frame. */
-
- _assert( (token_frame->b_tag == sar_k_token_frame) ||
- (token_frame->b_tag == sar_k_value_frame) ||
- (token_frame->b_tag == sar_k_null_frame),
- "token or value frame missing from stack" );
-
- /*
- ** The goal of the routine is to create a value entry in the
- ** symbol table for each constant and then place a pointer to
- ** that value entry in a value frame on the parse stack.
- ** Based on the type of constant, it may or may not already be
- ** in the symbol table.
- */
-
- switch (value_type)
- {
- case sym_k_char_8_value:
- case sym_k_compound_string_value:
- case sym_k_integer_value:
- case sym_k_float_value:
- case sym_k_single_float_value:
- case sym_k_localized_string_value:
- value_entry =
- (sym_value_entry_type *) token_frame->value.az_symbol_entry;
- /* Save the arg_type. This value should be zero for all cases above,
- except when the integer or float has units specified. In that case,
- the arg_type is used to store the type of units specified. */
- value_entry->b_arg_type = arg_type;
- value_entry->b_type = value_type;
- break;
-
- case sym_k_font_value:
- case sym_k_fontset_value:
- case sym_k_reason_value:
- case sym_k_argument_value:
- case sym_k_xbitmapfile_value:
- case sym_k_keysym_value:
- case sym_k_class_rec_name_value:
- /*
- ** transform the char 8 value entry into one for this
- ** special type. Before doing this, we need to insure
- ** that the char 8 value is not in error or non private.
- */
- value_entry =
- (sym_value_entry_type *) token_frame->value.az_symbol_entry;
- if (token_frame->b_type == sym_k_error_value)
- {
- value_type = sym_k_error_value;
- }
- else
- {
- sym_value_entry_type *value_save;
-
- value_save = value_entry;
- if ((value_entry->obj_header.az_name != NULL) ||
- (token_frame->b_type == sym_k_any_value))
- {
- value_entry =
- sem_create_value_entry ("",0,sym_k_any_value);
- value_entry->b_expr_opr = sym_k_coerce_op;
- if ((token_frame -> b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (token_frame,
- (char*)&(value_entry->az_exp_op1), sym_k_patch_add);
- else
- value_entry->az_exp_op1 = value_save;
- }
-
- value_entry->b_type = value_type;
- value_entry->obj_header.b_flags = sym_m_private;
-
- /* save the arg type for arguments */
- if (value_type == sym_k_argument_value)
- value_entry->b_arg_type = arg_type;
- }
-
- break;
-
- case sym_k_bool_value:
- boolean_value = 0;
- if ((token_frame->b_type == UILTRUE) ||
- (token_frame->b_type == ON ))
- boolean_value = 1;
- value_entry =
- sem_create_value_entry
- ( (char*)&boolean_value, sizeof(long), sym_k_bool_value );
-
- break;
-
- case sym_k_integer_table_value:
- case sym_k_asciz_table_value:
- case sym_k_trans_table_value:
- case sym_k_string_table_value:
- case sym_k_rgb_value:
-
- {
- int count;
- sym_value_entry_type * table_entry;
-
- /* Save the pointer to the table elements */
-
- table_entry =
- (sym_value_entry_type *) token_frame->value.az_symbol_entry;
- value_entry =
- sem_create_value_entry
- (0, 0, value_type );
- value_entry->az_first_table_value = table_entry;
-
-
- /* Get the count of elements in the table. Resets table_entry */
-
- for (table_entry=value_entry->az_first_table_value,
- count = 0;
- table_entry != NULL;
- table_entry = table_entry->az_next_table_value,
- count++) {
- }
-
- value_entry->b_table_count = count;
-
- break;
-
- }
- default:
- _assert( FALSE, "unexpected value type" );
- break;
- }
-
- /*
- ** make the target frame a value frame
- */
-
- _sar_move_source_info( value_frame, keyword_frame );
- value_frame->b_tag = sar_k_value_frame;
- value_frame->b_type = value_type;
- value_frame->b_flags = value_entry->obj_header.b_flags;
- value_frame->value.az_symbol_entry = (sym_entry_type *) value_entry;
-
-}
- void sar_make_rgb_private_value
- ( value_frame, token_frame, value_type, keyword_frame, arg_type )
-
-yystype *value_frame;
-yystype *token_frame;
-int value_type;
-yystype *keyword_frame;
-int arg_type;
-
-{
-/* placeholder RAP for RGB data type */
-
-}
-
-
-
-
-
-
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function takes a value frame which is the contents
-** of a table of strings and appends it to a value entry which is
-** the next entry in that table. It is used by string_table, icon,
-** and translation_table value types.
-**
-** FORMAL PARAMETERS:
-**
-** value_frame pointer to current table entry stack frame
-** table_frame pointer to stack frame holding the table
-** table_type dictates the type of table being generated
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-**
-**
-**--
-**/
-
-void sar_append_table_value( value_frame, table_frame, table_type, comma_frame )
-
-yystype *value_frame;
-yystype *table_frame;
-int table_type;
-yystype *comma_frame;
-
-{
- sym_value_entry_type *value_entry, *table_entry;
- int value_type;
-
- _assert( (value_frame->b_tag == sar_k_value_frame),
- "value frame missing from stack" );
-
- value_entry = (sym_value_entry_type *) value_frame->value.az_symbol_entry;
- value_type = value_entry->b_type;
-
- if (value_type == sym_k_error_value) return;
-
- table_entry = (sym_value_entry_type *) table_frame->value.az_symbol_entry;
-
- /*
- ** Some entries require checking for a forward reference. If the
- ** table entry is named, than a valref entry linked to it is placed
- ** in the table. If the new entry is a forward reference, than a
- ** valref is always required, but we can use the value node which
- ** is supplied as it is a parser artifact, and has no other use.
- */
-
- switch (table_type)
- {
- case sym_k_icon_value:
- if ((value_frame->b_flags & sym_m_forward_ref) != 0)
- {
- diag_issue_diagnostic
- (d_undefined,
- _sar_source_position(value_frame),
- "icon row",
- value_entry->obj_header.az_name->c_text);
- }
-
- if (value_entry->obj_header.az_name != NULL)
- {
- sym_value_entry_type *value_save;
-
- value_save = value_entry;
- value_entry = sem_create_value_entry (0, 0, value_type);
- value_entry->b_type = value_type;
- value_entry->obj_header.b_flags = sym_m_private;
- value_entry->b_expr_opr = sym_k_valref_op;
- value_entry->az_exp_op1 = value_save;
- }
- break;
-
- case sym_k_trans_table_value:
- case sym_k_asciz_table_value:
- case sym_k_integer_table_value:
- case sym_k_rgb_value:
- if (value_entry->obj_header.az_name != NULL)
- {
- sym_value_entry_type *value_save;
-
- if ( (value_frame->b_flags & sym_m_forward_ref) != 0)
- {
- value_entry->obj_header.b_flags = sym_m_private;
- value_entry->b_expr_opr = sym_k_valref_op;
- sym_make_value_forward_ref
- (value_frame,
- (char*)&(value_entry->az_exp_op1),
- sym_k_patch_add);
- }
- else
- {
- value_save = value_entry;
- value_entry = sem_create_value_entry (0, 0, value_type);
- value_entry->b_type = value_type;
- value_entry->obj_header.b_flags = sym_m_private;
- value_entry->b_expr_opr = sym_k_valref_op;
- value_entry->az_exp_op1 = value_save;
- }
- }
- break;
-
- case sym_k_string_table_value:
- /*
- ** value needs to be a compound string, so a coerce operator is
- ** inserted as required. We don't need both a coerce and a
- ** valref entry; if coerce is applied to a name, it also
- ** functions as the valref.
- */
- if (value_entry->obj_header.az_name != NULL)
- {
- sym_value_entry_type *value_save;
-
- if ( (value_frame->b_flags & sym_m_forward_ref) != 0)
- {
- value_entry->obj_header.b_flags = sym_m_private;
- value_entry->b_type = sym_k_compound_string_value;
- value_entry->b_expr_opr = sym_k_coerce_op;
- sym_make_value_forward_ref
- (value_frame,
- (char*)&(value_entry->az_exp_op1),
- sym_k_patch_add);
- }
- else
- {
- value_save = value_entry;
- value_entry = sem_create_value_entry (0, 0, value_type);
- value_entry->obj_header.b_flags = sym_m_private;
- value_entry->b_type = sym_k_compound_string_value;
- value_entry->az_exp_op1 = value_save;
- if ( value_type == sym_k_compound_string_value )
- value_entry->b_expr_opr = sym_k_valref_op;
- else
- value_entry->b_expr_opr = sym_k_coerce_op;
- }
- }
- break;
-
- default:
- _assert ( FALSE, "unknown table type found");
- }
-
- /*
- ** Prepend the value to the table. The table elements will be
- ** in reverse order.
- */
- value_entry->b_aux_flags |= sym_m_table_entry;
- value_entry->az_next_table_value = table_entry;
-
- /*
- ** Save source information
- */
- _sar_save_source_info ( &value_entry->header, comma_frame, value_frame);
-
- value_entry->header.b_type = value_frame->b_source_pos;
-
- /*
- ** make the target frame a value frame
- */
- value_frame->b_tag = sar_k_value_frame;
- value_frame->b_type = value_type;
- value_frame->b_flags = value_entry->obj_header.b_flags;
- value_frame->value.az_symbol_entry = (sym_entry_type *) value_entry;
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function issues an error message saying that a feature is
-** not implemented yet.
-**
-** FORMAL PARAMETERS:
-**
-** value_frame pointer to resultant value stack frame
-** token_frame pointer to source token frame (error position info)
-** error_text pointer to text to be substituted in message
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error message is issued
-**
-**--
-**/
-
-void sar_value_not_implemented( value_frame, token_frame, error_text )
-
-yystype *value_frame;
-yystype *token_frame;
-char *error_text;
-
-{
- /*
- ** make the target frame an error value frame
- */
-
- _sar_move_source_info( value_frame, token_frame );
- value_frame->b_tag = sar_k_value_frame;
- value_frame->b_type = sym_k_error_value;
- value_frame->b_flags = sym_m_private;
- value_frame->value.az_symbol_entry =
- (sym_entry_type *) sym_az_error_value_entry;
-
- diag_issue_diagnostic
- ( d_not_impl,
- _sar_source_position( value_frame ),
- error_text );
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function processes the concatenation of 2 strings.
-**
-** FORMAL PARAMETERS:
-**
-** operator_frame [in/out] pointer to resultant value stack frame
-** op1_frame [in] pointer to operand 1 value frame
-** op2_frame [in] pointer to operand 2 value frame
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error message is issued if value is out of range
-**
-**--
-**/
-
-void sar_cat_value( operator_frame, op1_frame, op2_frame )
-
-yystype *operator_frame;
-yystype *op1_frame;
-yystype *op2_frame;
-
-{
-
-/*
-** For pcc conversion, use defines instead of this enum.
-**
-** enum op_state
-** {
-** error=0, simple, compound, localized
-** };
-*/
-
-#define k_op_state_error 0
-#define k_op_state_simple 1
-#define k_op_state_compound 2
-#define k_op_state_localized 4
-
- int target_type;
- sym_value_entry_type *value1_entry;
- sym_value_entry_type *value2_entry;
- sym_value_entry_type *target_entry;
- unsigned int op1_state;
- unsigned int op2_state;
-
- _assert( (op1_frame->b_tag == sar_k_value_frame) &&
- (op2_frame->b_tag == sar_k_value_frame), "value frame missing" );
-
- /*
- ** The target type is dependent on the type of the sources. If both
- ** operands are primitive and have the same writing direction and
- ** charset, the result is still of that type. If not, the result
- ** is a compound string.
- */
-
- switch (op1_frame->b_type)
- {
- case sym_k_char_8_value:
- op1_state = k_op_state_simple;
- break;
- case sym_k_compound_string_value:
- op1_state = k_op_state_compound;
- break;
- case sym_k_localized_string_value:
- op1_state = k_op_state_localized;
- break;
- case sym_k_error_value:
- op1_state = k_op_state_error;
- break;
- default:
- diag_issue_diagnostic
- (d_wrong_type,
- _sar_source_position( op1_frame ),
- diag_value_text( op1_frame->b_type),
- "string or compound string");
- op1_state = k_op_state_error;
- }
-
- switch (op2_frame->b_type)
- {
- case sym_k_char_8_value:
- op2_state = k_op_state_simple;
- break;
- case sym_k_compound_string_value:
- op2_state = k_op_state_compound;
- break;
- case sym_k_localized_string_value:
- op2_state = k_op_state_localized;
- break;
- case sym_k_error_value:
- op2_state = k_op_state_error;
- break;
- default:
- diag_issue_diagnostic
- (d_wrong_type,
- _sar_source_position( op2_frame ),
- diag_value_text( op2_frame->b_type),
- "string or compound string");
- op2_state = k_op_state_error;
- }
-
- value1_entry = (sym_value_entry_type *) op1_frame->value.az_symbol_entry;
- value2_entry = (sym_value_entry_type *) op2_frame->value.az_symbol_entry;
-
- /*
- ** Verify that both operands are private values
- */
-
- if ((op1_frame->b_flags & sym_m_private) == 0)
- {
- op1_state = k_op_state_error;
- diag_issue_diagnostic
- (d_nonpvt,
- _sar_source_position (op1_frame),
- value1_entry->obj_header.az_name->c_text );
- }
- if ((op2_frame->b_flags & sym_m_private) == 0)
- {
- op2_state = k_op_state_error;
- diag_issue_diagnostic
- (d_nonpvt,
- _sar_source_position (op2_frame),
- value2_entry->obj_header.az_name->c_text );
- }
-
- switch (op1_state + (op2_state<<2))
- {
- /*
- ** This is the case of appending to simple strings. Just append them
- ** unless they have different directions or the first one has the separate
- ** attribute.
- */
- case k_op_state_simple + (k_op_state_simple<<2):
- if ((value1_entry->b_charset == value2_entry->b_charset)
- &&
- ((value1_entry->b_direction) == (value2_entry->b_direction))
- &&
- ((value1_entry->b_aux_flags & sym_m_separate) == 0))
- {
- target_entry = (sym_value_entry_type *)
- sem_cat_str_to_str
- (value1_entry, (value1_entry->obj_header.az_name==NULL),
- value2_entry, (value2_entry->obj_header.az_name==NULL));
- target_type = sym_k_char_8_value;
- }
- else
- {
- target_entry = (sym_value_entry_type *) sem_create_cstr( );
- sem_append_str_to_cstr
- (target_entry,
- value1_entry, (value1_entry->obj_header.az_name==NULL));
- sem_append_str_to_cstr
- (target_entry,
- value2_entry, (value2_entry->obj_header.az_name==NULL));
- target_type = sym_k_compound_string_value;
- }
- break;
-
- /*
- ** This is the case of one simple and one compound string. Change the
- ** simple to a compound and append them together. Depend on the append
- ** routine to do the right thing.
- */
- case k_op_state_simple + (k_op_state_compound<<2):
- target_entry = (sym_value_entry_type *) sem_create_cstr( );
- sem_append_str_to_cstr
- (target_entry,
- value1_entry, (value1_entry->obj_header.az_name==NULL));
- sem_append_cstr_to_cstr
- (target_entry,
- value2_entry, (value2_entry->obj_header.az_name==NULL));
- target_type = sym_k_compound_string_value;
- break;
-
- /*
- ** This is the case of one simple and one compound string. Append the
- ** simple to the compound. Depend on the append routine to do the right
- ** thing.
- */
- case k_op_state_compound + (k_op_state_simple<<2):
- target_entry = (sym_value_entry_type *) sem_create_cstr( );
- sem_append_cstr_to_cstr
- (target_entry,
- value1_entry, (value1_entry->obj_header.az_name==NULL));
- sem_append_str_to_cstr
- (target_entry,
- value2_entry, (value2_entry->obj_header.az_name==NULL));
- target_type = sym_k_compound_string_value;
- break;
-
- /*
- ** This is the case of two compound strings. Just let the append routine
- ** do the right thing.
- */
- case k_op_state_compound + (k_op_state_compound<<2):
- target_entry = (sym_value_entry_type *) sem_create_cstr( );
- sem_append_cstr_to_cstr
- (target_entry,
- value1_entry, (value1_entry->obj_header.az_name==NULL));
- sem_append_cstr_to_cstr
- (target_entry,
- value2_entry, (value2_entry->obj_header.az_name==NULL));
- target_type = sym_k_compound_string_value;
- break;
-
- default: /* some form of error */
- target_type = sym_k_error_value;
- target_entry = (sym_value_entry_type *) sym_az_error_value_entry;
- break;
- }
-
- /*
- ** initialize the target frame
- */
-
- _sar_save_source_pos ( &target_entry->header, op2_frame);
-
-/* target_entry->az_source_rec = op2_frame->az_source_record; */
-
- operator_frame->b_tag = sar_k_value_frame;
- operator_frame->b_type = target_type;
- operator_frame->b_flags = sym_m_private;
- operator_frame->value.az_symbol_entry = (sym_entry_type *) target_entry;
-
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function checks the attributes of COMPOUND_STRING function.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame pointer to resultant token stack frame
-** value_frame pointer to frame holding keyword and value
-** prior_value_frame pointer to previous properties
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** attribute information is stuffed in target frame
-**
-**--
-**/
-
-void sar_chk_comp_str_attr( target_frame, value_frame, prior_value_frame )
-
-yystype *target_frame;
-yystype *value_frame;
-yystype *prior_value_frame;
-{
-sym_value_entry_type *value_entry;
-
- /*
- ** Set up not specified values in the target frame.
- ** b_type will hold the writing direction and separate propertied
- ** az_symbol_entry will hold the pointer to the character set.
- */
-
- switch (prior_value_frame->b_tag)
- {
- case sar_k_null_frame:
- /*
- ** no prior values
- */
-
- target_frame->b_tag = sar_k_token_frame;
- target_frame->b_direction = NOSTRING_DIRECTION;
-
- /* Fix for CN 16149 (DTS 10023) part 3 -- flag b_charset as non-existent */
- target_frame->b_charset = sym_k_error_charset;
- target_frame->b_type = 0;
- target_frame->value.az_symbol_entry = NULL;
- break;
-
- case sar_k_token_frame:
- case sar_k_value_frame:
- /*
- ** prior values - transfer them
- */
-
- target_frame->b_tag = sar_k_token_frame;
- target_frame->b_direction = prior_value_frame->b_direction;
- target_frame->b_charset = prior_value_frame->b_charset;
- target_frame->b_type = prior_value_frame->b_type;
- target_frame->value.az_symbol_entry =
- target_frame->value.az_symbol_entry;
- break;
- default:
- _assert( FALSE, "prior value frame missing from stack" );
- }
-
- /*
- ** Case on the keyword for the attribute given
- */
-
- value_entry =
- (sym_value_entry_type *) value_frame->value.az_symbol_entry;
-
- if ((value_entry != NULL) && (value_frame->b_type != CHARACTER_SET) &&
- (value_entry->obj_header.b_flags & sym_m_forward_ref) != 0)
- {
- diag_issue_diagnostic
- (d_undefined,
- _sar_source_position(value_frame),
- "compound string attribute",
- value_entry->obj_header.az_name->c_text);
- }
-
- switch (value_frame->b_type)
- {
- case RIGHT_TO_LEFT:
- {
- /*
- ** If the value is a boolean, then set the b_direction field.
- */
- if (value_entry->b_type == sym_k_bool_value)
- if (value_entry->value.l_integer == TRUE)
- target_frame->b_direction = XmSTRING_DIRECTION_R_TO_L;
- else
- target_frame->b_direction = XmSTRING_DIRECTION_L_TO_R;
-
- break;
- }
-
- case SEPARATE:
- {
- /*
- ** If the value is a boolean, then just set the corresponding mask
- ** accordingly.
- */
- if (value_entry->b_type == sym_k_bool_value)
- if (value_entry->value.l_integer == TRUE)
- target_frame->b_type |= sym_m_separate;
- else
- target_frame->b_type &= ~sym_m_separate;
-
- break;
- }
-
- case CHARACTER_SET:
- {
- /*
- ** There are two different kinds of character sets. One is a
- ** token frame, the other is a value frame which points to a
- ** char8 string value in the symbol table that represents the charset.
- */
- switch (value_frame->b_tag)
- {
- /*
- ** For token frames, acquire the charset from the keytable entry
- ** and set frame type so sar_make_comp_str knows how to interpret
- ** the frame.
- */
- case sar_k_token_frame:
- {
- key_keytable_entry_type *keyword_entry;
-
- keyword_entry = (key_keytable_entry_type *)
- value_frame->value.az_keyword_entry;
- target_frame->b_tag = sar_k_token_frame;
- target_frame->b_charset =
- sem_map_subclass_to_charset( keyword_entry->b_subclass );
- break;
- }
- /*
- ** For value frames, save the value pointer and mark the
- ** frame again for correct use by sar_make_comp_str.
- */
- case sar_k_value_frame:
- target_frame->b_tag = sar_k_value_frame;
- target_frame->value.az_symbol_entry =
- value_frame->value.az_symbol_entry;
- break;
- }
- break;
-
- }
-
- default:
- _assert( FALSE, "keyword missing from stack" );
- }
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function makes a COMPOUND_STRING and sets the properties
-** of the string.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame pointer to resultant token stack frame
-** value_frame pointer to string value
-** attr_frame pointer to strings attributes
-** keyword_frame frame to use as locator for result
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_make_comp_str
- ( target_frame, value_frame, attr_frame, keyword_frame )
-
-yystype *target_frame;
-yystype *value_frame;
-yystype *attr_frame;
-yystype *keyword_frame;
-{
-
- sym_value_entry_type *value_entry;
- sym_value_entry_type *cstr_entry;
-
- _assert( value_frame->b_tag == sar_k_value_frame,
- "value frame missing from stack" );
-
- /*
- ** Make a compound string operation. The compound string will be created
- ** during expression evaluation in UilSemVal.c.
- */
-
- cstr_entry = (sym_value_entry_type *) sem_create_cstr();
- cstr_entry->b_expr_opr = sym_k_comp_str_op;
- if ((value_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (value_frame,
- (char*)&(cstr_entry->az_exp_op1), sym_k_patch_add);
- else
- {
- value_entry =
- (sym_value_entry_type *) value_frame->value.az_symbol_entry;
- cstr_entry->az_exp_op1 = value_entry;
- }
-
- /*
- ** If the attr_frame is not null, it must be a value frame with contains
- ** a pointer to the value entry for the userdefined charset, or a token frame
- ** which contains the charset token subclass.
- */
- switch (attr_frame->b_tag)
- {
- case sar_k_value_frame:
- /*
- ** Set the attributes of the string, as specified by the options
- ** to the COMPOUND_STRING function, without disturbing any
- ** existing bits.
- */
- cstr_entry->b_direction = attr_frame->b_direction;
- cstr_entry->b_aux_flags |= (attr_frame->b_type & sym_m_separate);
-
- /*
- ** If the symbol_entry pointer is not null then a charset was
- ** specified for this CS, just copy the b_charset and
- ** az_charset_value pointers into the value entry for this CS.
- */
- if ((attr_frame->value.az_symbol_entry) != 0)
- {
- sym_value_entry_type * az_value_entry;
-
- az_value_entry = (sym_value_entry_type *)
- attr_frame->value.az_symbol_entry;
- cstr_entry->b_charset = az_value_entry->b_charset;
- cstr_entry->b_direction = az_value_entry->b_direction;
- cstr_entry->az_charset_value =
- az_value_entry;
- }
-
- break;
-
- case sar_k_token_frame:
- if ((attr_frame->b_charset) != 0)
- cstr_entry->b_charset =
- sem_map_subclass_to_charset (attr_frame->b_charset);
- cstr_entry->b_direction = attr_frame->b_direction;
- cstr_entry->b_aux_flags |= (attr_frame->b_type & sym_m_separate);
- break;
- }
-
- /*
- ** initialize the target frame
- */
-
- _sar_move_source_info( target_frame, keyword_frame );
-
- _sar_save_source_pos ( &cstr_entry->header, value_frame );
-
-/* cstr_entry->az_source_rec = value_frame->az_source_record; */
-
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = sym_k_compound_string_value;
- target_frame->b_flags = sym_m_private;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) cstr_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function makes a COMPOUND_STRING_COMPONENT and sets the properties
-** of the string.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame pointer to resultant token stack frame
-** type_frame pointer to type value
-** value_frame pointer to component value
-** keyword_frame frame to use as locator for result
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_make_comp_str_comp
- ( target_frame, type_frame, value_frame, keyword_frame )
-
-yystype *target_frame;
-yystype *type_frame;
-yystype *value_frame;
-yystype *keyword_frame;
-{
- key_keytable_entry_type *type_entry;
- key_keytable_entry_type *value_entry;
- sym_value_entry_type *cstr_entry;
- unsigned short int enumval_code;
- unsigned short int enumset_code;
- unsigned short int type;
- char *cset_name;
- int i;
- Boolean found;
- String str;
- XmStringDirection dir;
- XmDirection lay_dir;
- XmString cstr_r = NULL;
-
- _assert(type_frame->b_tag == sar_k_token_frame,
- "value frame missing from stack" );
-
- /*
- ** Make a compound string component.
- */
-
- cstr_entry = (sym_value_entry_type *) sem_create_cstr();
-
- /* Evaluate type. */
- type_entry = (key_keytable_entry_type *)type_frame->value.az_keyword_entry;
-
- enumval_code = type_entry->b_subclass;
- enumset_code = argument_enumset_table[sym_k_XmStringComponent_arg];
- found = FALSE;
- for (i = 0; i < enum_set_table[enumset_code].values_cnt; i++)
- if (enum_set_table[enumset_code].values[i] == enumval_code)
- {
- found = TRUE;
- break;
- }
-
- if (found) type = enumval_values_table[enumval_code];
- else
- {
- diag_issue_diagnostic(d_arg_type,
- _sar_source_position(type_frame),
- uil_enumval_names[enumval_code],
- "compound_string_component",
- "XmStringComponentType");
-
- type = XmSTRING_COMPONENT_UNKNOWN;
- }
-
- switch (type)
- {
- case XmSTRING_COMPONENT_UNKNOWN:
- case XmSTRING_COMPONENT_SEPARATOR:
- case XmSTRING_COMPONENT_LAYOUT_POP:
- case XmSTRING_COMPONENT_TAB:
- /* If value_frame is not null, issue diagnostic. */
- if (value_frame->b_tag != sar_k_null_frame)
- diag_issue_diagnostic(d_arg_type,
- _sar_source_position(value_frame),
- "non-NULL",
- "compound_string_component",
- "NULL");
-
- cstr_r = XmStringComponentCreate(type, 0, NULL);
- break;
-
- case XmSTRING_COMPONENT_LOCALE:
- if ((value_frame->b_tag != sar_k_null_frame) &&
- (value_frame->b_type != CHARSET_NAME))
- diag_issue_diagnostic(d_arg_type,
- _sar_source_position(value_frame),
- "non-NULL",
- "compound_string_component",
- "NULL or _MOTIF_DEFAULT_LOCALE");
- else if (value_frame->b_type == CHARSET_NAME)
- {
- cset_name =
- sem_charset_name((value_frame->value.az_keyword_entry)->b_subclass,
- (sym_value_entry_type *)
- (value_frame->value.az_keyword_entry));
- if (strcmp(cset_name, "_MOTIF_DEFAULT_LOCALE") != 0)
- diag_issue_diagnostic(d_arg_type,
- _sar_source_position(value_frame),
- cset_name,
- "compound_string_component",
- "_MOTIF_DEFAULT_LOCALE");
- }
-
- cstr_r = XmStringComponentCreate(type, strlen(_MOTIF_DEFAULT_LOCALE),
- _MOTIF_DEFAULT_LOCALE);
- break;
-
- case XmSTRING_COMPONENT_CHARSET:
- case XmSTRING_COMPONENT_TEXT:
- case XmSTRING_COMPONENT_LOCALE_TEXT:
- case XmSTRING_COMPONENT_WIDECHAR_TEXT:
- case XmSTRING_COMPONENT_RENDITION_BEGIN:
- case XmSTRING_COMPONENT_RENDITION_END:
- str = "";
-
- if (value_frame->b_tag == sar_k_null_frame)
- diag_issue_diagnostic(d_arg_type,
- type_frame->az_source_record,
- type_frame->b_source_end,
- "NULL",
- "compound_string_component",
- diag_value_text(sym_k_char_8_value));
- else if ((value_frame->b_type != CHAR_8_LITERAL) &&
- (value_frame->b_type != LOC_STRING) &&
- ((value_frame->b_type != CHARSET_NAME) ||
- (type != XmSTRING_COMPONENT_CHARSET)))
- diag_issue_diagnostic(d_arg_type,
- _sar_source_position(value_frame),
- tok_token_name_table[value_frame->b_type],
- "compound_string_component",
- diag_value_text(sym_k_char_8_value));
- else
- {
- if (value_frame->b_type == CHARSET_NAME)
- {
- cset_name =
- sem_charset_name((value_frame->value.az_keyword_entry)->b_subclass,
- (sym_value_entry_type *)
- (value_frame->value.az_keyword_entry));
- if (strcmp(cset_name, "XmFONTLIST_DEFAULT_TAG") == 0)
- str = XmFONTLIST_DEFAULT_TAG;
- else str = cset_name;
- }
- else
- /* Extract string */
- str = ((sym_value_entry_type *)
- (value_frame->value.az_symbol_entry))->value.c_value;
- }
-
- cstr_r = XmStringComponentCreate(type, strlen(str), (XtPointer)str);
- break;
-
- case XmSTRING_COMPONENT_DIRECTION:
- if (value_frame->b_tag == sar_k_null_frame)
- diag_issue_diagnostic(d_arg_type,
- type_frame->az_source_record,
- type_frame->b_source_end,
- "NULL",
- "compound_string_component",
- "XmStringDirection");
- else if (value_frame->b_type != ENUMVAL_NAME)
- diag_issue_diagnostic(d_arg_type,
- _sar_source_position(value_frame),
- diag_value_text(value_frame->b_type),
- "compound_string_component",
- "XmStringDirection");
- else
- {
- /* Extract and validate enumval */
- value_entry = (key_keytable_entry_type *)value_frame->value.az_keyword_entry;
-
- enumval_code = value_entry->b_subclass;
- enumset_code = argument_enumset_table[sym_k_XmNstringDirection_arg];
- found = FALSE;
- for (i = 0; i < enum_set_table[enumset_code].values_cnt; i++)
- if (enum_set_table[enumset_code].values[i] == enumval_code)
- {
- found = TRUE;
- break;
- }
-
- if (found) dir = enumval_values_table[enumval_code];
- else
- {
- diag_issue_diagnostic(d_arg_type,
- _sar_source_position(value_frame),
- uil_enumval_names[enumval_code],
- "compound_string_component",
- "XmStringDirection");
-
- dir = XmSTRING_DIRECTION_L_TO_R;
- }
- }
-
- cstr_r = XmStringComponentCreate(type, sizeof(XmStringDirection), &dir);
- break;
-
- case XmSTRING_COMPONENT_LAYOUT_PUSH:
- if (value_frame->b_tag == sar_k_null_frame)
- diag_issue_diagnostic(d_arg_type,
- type_frame->az_source_record,
- type_frame->b_source_end,
- "NULL",
- "compound_string_component",
- "XmDirection");
- else if (value_frame->b_type != ENUMVAL_NAME)
- diag_issue_diagnostic(d_arg_type,
- _sar_source_position(value_frame),
- diag_value_text(value_frame->b_type),
- "compound_string_component",
- "XmDirection");
- else
- {
- /* Extract and validate enumval */
- value_entry = (key_keytable_entry_type *)value_frame->value.az_keyword_entry;
-
- enumval_code = value_entry->b_subclass;
- enumset_code = argument_enumset_table[sym_k_XmNlayoutDirection_arg];
- found = FALSE;
- for (i = 0; i < enum_set_table[enumset_code].values_cnt; i++)
- if (enum_set_table[enumset_code].values[i] == enumval_code)
- {
- found = TRUE;
- break;
- }
-
- if (found) lay_dir = enumval_values_table[enumval_code];
- else
- {
- diag_issue_diagnostic(d_arg_type,
- _sar_source_position(value_frame),
- uil_enumval_names[enumval_code],
- "compound_string_component",
- "XmDirection");
-
- lay_dir = XmLEFT_TO_RIGHT;
- }
- }
-
- cstr_r = XmStringComponentCreate(type, sizeof(XmDirection), &lay_dir);
- break;
- }
-
- cstr_entry->value.xms_value = cstr_r;
- cstr_entry->w_length = XmStringLength(cstr_r);
-
- cstr_entry->az_first_table_value = NULL;
-
- _assert(cstr_entry->w_length <= MrmMaxResourceSize, "compound string too long" );
-
- /*
- ** initialize the target frame
- */
- _sar_move_source_info( target_frame, keyword_frame );
-
- _sar_save_source_pos ( &cstr_entry->header, type_frame );
-
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = sym_k_compound_string_value;
- target_frame->b_flags = sym_m_private;
- target_frame->value.az_symbol_entry = (sym_entry_type *)cstr_entry;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function makes a WIDE_CHARACTER and sets the properties
-** of the string.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame pointer to resultant token stack frame
-** value_frame pointer to string value
-** attr_frame pointer to strings attributes
-** keyword_frame frame to use as locator for result
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_make_wchar_str
- ( target_frame, value_frame, attr_frame, keyword_frame )
-
-yystype *target_frame;
-yystype *value_frame;
-yystype *attr_frame;
-yystype *keyword_frame;
-{
-
- sym_value_entry_type *value_entry;
- sym_value_entry_type *wchar_str_entry;
-
- _assert( value_frame->b_tag == sar_k_value_frame,
- "value frame missing from stack" );
-
- /*
- ** Make a wide_character string operation. The wide_character string will
- ** be created during retrieval from the UID file.
- */
-
- wchar_str_entry = (sym_value_entry_type *) sem_create_wchar_str();
- wchar_str_entry->b_expr_opr = sym_k_wchar_str_op;
- if ((value_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (value_frame,
- (char*)&(wchar_str_entry->az_exp_op1), sym_k_patch_add);
- else
- {
- value_entry =
- (sym_value_entry_type *) value_frame->value.az_symbol_entry;
- value_entry->b_type = value_frame->b_type;
- wchar_str_entry->az_exp_op1 = value_entry;
- }
-
- /*
- ** initialize the target frame
- */
-
- _sar_move_source_info( target_frame, keyword_frame );
-
- _sar_save_source_pos ( &wchar_str_entry->header, value_frame );
-
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = sym_k_wchar_string_value;
- target_frame->b_flags = sym_m_private;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *)wchar_str_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function issues an error message saying that the value is
-** the wrong type for this context.
-**
-** FORMAL PARAMETERS:
-**
-** value_frame pointer to resultant value stack frame
-** expected_type type of constant required by this context
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error message is issued
-**
-**--
-**/
-
-void sar_value_type_error( value_frame, expected_type )
-
-yystype *value_frame;
-int expected_type;
-
-
-{
-
- _assert( value_frame->b_tag == sar_k_value_frame, "value frame missing" );
-
- /*
- ** make the target frame an error value frame
- */
-
- if (value_frame->b_type != sym_k_error_value)
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_position( value_frame ),
- diag_value_text( value_frame->b_type ),
- diag_value_text( expected_type ) );
-
- value_frame->b_type = sym_k_error_value;
- value_frame->b_flags = sym_m_private;
- value_frame->value.az_symbol_entry =
- (sym_entry_type *) sym_az_error_value_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function issues an error message saying that the value
-** must be private. Expect for arguments and argument values,
-** values used by UIL need to be private rather than public.
-** To make them public would mean that URM would need to perform
-** the function at runtime.
-**
-** FORMAL PARAMETERS:
-**
-** value_frame pointer to resultant value stack frame
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error message is issued
-**
-**--
-**/
-
-void sar_private_error( value_frame )
-
-yystype *value_frame;
-
-
-{
-
- _assert( value_frame->b_tag == sar_k_value_frame, "value frame missing" );
-
- /*
- ** make the target frame an error value frame
- */
-
- if (value_frame->b_type != sym_k_error_value)
- {
- sym_value_entry_type *value_entry;
-
- value_entry =
- (sym_value_entry_type *) value_frame->value.az_symbol_entry;
-
- diag_issue_diagnostic
- ( d_nonpvt,
- _sar_source_position( value_frame ),
- value_entry->obj_header.az_name->c_text );
-
- }
-
- value_frame->b_type = sym_k_error_value;
- value_frame->b_flags = sym_m_private;
- value_frame->value.az_symbol_entry =
- (sym_entry_type *) sym_az_error_value_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function creates a value entry for an imported value.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame ptr to target value frame on parse stack
-** token_frame ptr to token frame giving the data type
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_import_value_entry(target_frame, token_frame)
-
-yystype *target_frame;
-yystype *token_frame;
-{
- sym_value_entry_type *value_entry;
-
- _assert( token_frame->b_tag == sar_k_token_frame, "token frame missing" );
-
- /*
- ** Need to create a value entry and mark it as imported.
- ** The b_type field of the token has been set to the type of value
- ** by a prior grammar reduction
- */
-
- value_entry = (sym_value_entry_type *)
- sem_allocate_node (sym_k_value_entry, sym_k_value_entry_size);
- _sar_save_source_pos ( &value_entry->header, &yylval );
-
-/* value_entry->az_source_rec = yylval.az_source_record; */
-
- value_entry->b_type = token_frame->b_type;
- value_entry->obj_header.b_flags = sym_m_imported;
-
- /*
- ** set up the target frame
- */
-
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_flags = sym_m_imported;
- target_frame->b_type = value_entry->b_type;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) value_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function binds the name of a value with its value.
-**
-** FORMAL PARAMETERS:
-**
-** id_frame ptr to token frame holding the name for the value
-** value_frame ptr to value frame
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_current_section_entry global pointer to the "current" section list
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** errors if name has previously been used to declare another object
-** may be a new value entry
-**
-**--
-**/
-
-void sar_bind_value_name(id_frame, value_frame, semi_frame)
-
-yystype *id_frame;
-yystype *value_frame;
-yystype *semi_frame;
-
-{
- sym_name_entry_type *name_entry;
- sym_value_entry_type *value_entry;
- sym_section_entry_type *section_entry;
- int flags;
- boolean error;
-
- _assert( id_frame->b_tag == sar_k_token_frame, "id frame missing" );
- _assert( value_frame->b_tag == sar_k_value_frame, "value frame missing" );
-
- /*
- ** First we check on the name to see if it has been previously used.
- ** This function returns NULL if name cannot be used, in which case
- ** processing is over.
- */
-
- name_entry = sem_dcl_name( id_frame );
-
- if (name_entry == NULL)
- return;
-
- /*
- ** Processing is now based on where the value is private, imported, or
- ** exported.
- */
-
- value_entry = (sym_value_entry_type *) value_frame->value.az_symbol_entry;
- flags = value_frame->b_flags;
- error = (value_frame->b_type == sym_k_error_value);
-
- if ((flags & sym_m_imported) == 0)
- {
- if ((value_entry->obj_header.az_name != NULL) || error)
- {
- /*
- ** Create a new value node for the unary value reference operator.
- ** az_exp_op1 will point to the node being referenced.
- */
-
- sym_value_entry_type *saved_value_entry_ptr;
-
- saved_value_entry_ptr = value_entry;
-
- value_entry =
- sem_create_value_entry ("",0,sym_k_any_value);
-
- value_entry->b_expr_opr = sym_k_valref_op;
-
- /*
- ** If the value is a forward reference, we'll patch in the
- ** address of the the referenced value between passes. Otherwise,
- ** just point to the referenced value node.
- */
-
- if ((value_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (value_frame,
- (char*)&(value_entry->az_exp_op1), sym_k_patch_add);
- else
- value_entry->az_exp_op1 =
- saved_value_entry_ptr;
- }
-
- if ((flags & sym_m_exported) != 0)
- sym_make_external_def( name_entry );
-
- }
-
- /*
- ** Place the name and flags in the value entry.
- */
-
- value_entry->obj_header.az_name = name_entry;
- value_entry->obj_header.b_flags =
- (value_entry->obj_header.b_flags & clear_class_mask) | flags;
-
- name_entry->az_object = (sym_entry_type *) value_entry;
-
- /*
- ** save the source file info for this value entry
- */
- _sar_save_source_info (&value_entry->header, id_frame, semi_frame );
-
- /*
- ** allocate a section entry to link the value entry into the structure
- */
- section_entry = (sym_section_entry_type *) sem_allocate_node
- (sym_k_section_entry, sym_k_section_entry_size);
-
- /*
- ** Link this entry off of the current section list
- */
- section_entry->next = (sym_entry_type *)
- sym_az_current_section_entry->entries;
- sym_az_current_section_entry->entries = (sym_entry_type *) section_entry;
- section_entry->entries = (sym_entry_type *)value_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function checks to see if a name is available for naming a
-** construct.
-**
-** FORMAL PARAMETERS:
-**
-** id_frame ptr to a token frame on the parse stack holding the name
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** ptr to name entry or NULL
-**
-** SIDE EFFECTS:
-**
-** name entry may be created
-** error message for duplicate declaration may be issued
-**
-**--
-**/
-
-sym_name_entry_type
- *sem_dcl_name(id_frame)
-
-XmConst yystype *id_frame;
-
-{
- sym_name_entry_type *name_entry;
- char * ptr;
-
- _assert( id_frame->b_tag == sar_k_token_frame, "arg1 not id frame" );
-
- /*
- ** The id frame may hold a name or the keyword for a font name, color
- ** name, reason name etc. If it is one of these special name, then
- ** we insert the special name in the symbol table as a name. This has
- ** the effect of creating a name entry if one doesn't existing or finding
- ** the name entry if one does.
- */
-
- if (id_frame->b_type != NAME)
- {
- diag_issue_diagnostic
- ( d_override_builtin,
- _sar_source_position( id_frame ),
- id_frame->value.az_keyword_entry->at_name);
-
- name_entry =
- sym_insert_name
- ( id_frame->value.az_keyword_entry->b_length,
- id_frame->value.az_keyword_entry->at_name );
- }
- else
- name_entry = (sym_name_entry_type *) id_frame->value.az_symbol_entry;
-
- /*
- ** If the name entry already has an object linked from it, we have an
- ** duplicate definition of the same name. Otherwise, everything is fine.
- */
-
- if (name_entry->az_object == NULL )
- return name_entry;
-
- if (name_entry->az_object->header.b_tag == sym_k_value_entry) {
- ptr = diag_value_text (
- ((sym_value_entry_type *) (name_entry->az_object))->b_type);
- } else if (name_entry->az_object->header.b_tag == sym_k_widget_entry) {
- ptr = diag_object_text (
- ((sym_widget_entry_type *) (name_entry->az_object))
- -> header.b_type);
- } else {
- ptr = diag_tag_text( name_entry->az_object->header.b_tag );
- }
-
- diag_issue_diagnostic
- ( d_previous_def,
- _sar_source_position( id_frame ),
- name_entry->c_text,
- ptr );
-
- return NULL;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function creates a value entry for a token that represents
-** a value.
-**
-** FORMAL PARAMETERS:
-**
-** value pointer to value
-** length length of the value in bytes
-** value_type type of value to create
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** a value_entry
-**
-** SIDE EFFECTS:
-**
-** value entry is created in the symbol table
-**
-**--
-**/
-
-sym_value_entry_type
- *sem_create_value_entry( value, length, value_type )
-
-char *value;
-int length;
-int value_type;
-{
- sym_value_entry_type *value_entry;
-
- /*
- ** the value can be a string, integer, float, boolean, or
- ** a font_name, argument_name, color_name, or reason_name
- */
-
- /*
- ** the strategy of the function is to determine the contents
- ** of the value entry, then centrally allocate and initialize it.
- **
- ** Allocate the entry and save the source position. Initialize
- ** all fields to either default values or call parameters.
- */
- value_entry = (sym_value_entry_type *)
- sem_allocate_node (sym_k_value_entry, sym_k_value_entry_size);
- _sar_save_source_pos ( &value_entry->header, &yylval );
- sar_assoc_comment ((sym_obj_entry_type *)value_entry); /* preserve comments */
-
- value_entry->b_type = value_type;
- value_entry->obj_header.b_flags = (sym_m_private | sym_m_builtin);
- value_entry->w_length = length;
- value_entry->output_state = 0;
- value_entry->b_table_count = 0;
- value_entry->b_aux_flags = 0;
- value_entry->b_arg_type = 0;
- value_entry->b_data_offset = 0;
- value_entry->b_pixel_type = sym_k_unspecified_color;
- value_entry->b_charset = 0;
- value_entry->b_direction = NOSTRING_DIRECTION;
- value_entry->b_max_index = 0;
- value_entry->b_expr_opr = sym_k_unspecified_op;
- value_entry->b_enumeration_value_code = 0;
- value_entry->resource_id = 0;
- value_entry->obj_header.az_name = NULL;
- value_entry->az_charset_value = NULL;
- value_entry->az_next_table_value = NULL;
- value_entry->value.l_integer = 0;
- if ((value_type == sym_k_char_8_value ||
- value_type == sym_k_font_value ||
- value_type == sym_k_fontset_value ||
- value_type == sym_k_keysym_value ||
- value_type == sym_k_xbitmapfile_value ||
- value_type == sym_k_class_rec_name_value ||
- value_type == sym_k_identifier_value) &&
- (length > 0))
- {
- value_entry->value.c_value = (char *) XtCalloc(1,length);
- _move( value_entry->value.c_value, value, length );
- }
- else if (value_type == sym_k_compound_string_value && (length > 0))
- {
- value_entry->value.xms_value = (XmString) XtCalloc(1,length);
- _move( value_entry->value.xms_value, value, length );
- }
- else
- if ( length > 0 )
- _move( &(value_entry->value.c_value), value, length );
-
- /* For enumerations which accept boolean values */
- if (value_type == sym_k_bool_value)
- value_entry->b_enumeration_value_code =
- (*value) ? sym_k_TRUE_enumval : sym_k_FALSE_enumval;
-
- return value_entry;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function creates the value symbol node for an
-** identifier declaration.
-**
-** FORMAL PARAMETERS:
-**
-** id_frame ptr to token frame for the identifier name
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_current_section_entry global that points to the "current" section list
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** errors may be issued for previously defined name
-**
-**--
-**/
-
-void sar_create_identifier (id_frame, semi_frame)
-
-XmConst yystype *id_frame;
-XmConst yystype *semi_frame;
-
-{
- sym_name_entry_type *name_entry;
- sym_value_entry_type *value_entry;
- sym_section_entry_type *section_entry;
- int len;
- char * ptr;
-
- /*
- ** Call standard routine to check name entry for id_frame.
- ** This routine handles font name, color names, etc used as ids
- */
-
- name_entry = sem_dcl_name( id_frame );
-
- if (name_entry == NULL)
- return;
-
- /*
- ** Allocate the value entry and fill it in. The b_type field
- ** in name entries holds the length of the name. Add one for null.
- */
-
- len = name_entry->header.b_type + 1;
- ptr = name_entry->c_text;
-
- value_entry = sem_create_value_entry ( ptr, len, sym_k_identifier_value );
-
- _move (value_entry->value.c_value, ptr, len);
-
- value_entry->obj_header.b_flags |= sym_m_private;
-
- value_entry->obj_header.az_name = name_entry;
- name_entry->az_object = (sym_entry_type *) value_entry;
-
- /*
- ** save the source file info for this identifier entry
- */
- _sar_save_source_info (&name_entry->header, id_frame, semi_frame );
-
- /*
- ** allocate a section entry to link the identifier entry into the structure
- */
- section_entry = (sym_section_entry_type *) sem_allocate_node
- (sym_k_section_entry, sym_k_section_entry_size);
-
- /*
- ** Link this entry off of the current section list
- */
- section_entry->next =
- (sym_entry_type *) sym_az_current_section_entry->entries;
- sym_az_current_section_entry->entries =
- (sym_entry_type *) section_entry;
- section_entry->entries = (sym_entry_type *)name_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds a font table. This font table
-** is a list of symbol table entries of font items.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame frame holding the font table generated
-** font_frame value frame specifying the font value
-** prior_target_frame frame holding the font table generated so far
-** keyword_frame frame holding the font_table keyword
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** target_frame
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** font table symbol entry is generated if prior target is null
-**
-**--
-**/
-
-void sar_make_font_table
- (target_frame, font_frame, prior_target_frame, keyword_frame)
-
-yystype *target_frame;
-yystype *font_frame;
-yystype *prior_target_frame;
-yystype *keyword_frame;
-
-{
- sym_value_entry_type *font_table_entry;
- sym_value_entry_type *font_item;
-
- _assert( font_frame->b_tag == sar_k_value_frame, "font item missing" );
-
- font_item = (sym_value_entry_type *) font_frame->value.az_symbol_entry;
-
- /*
- ** If the prior frame is null, this is the first item in the
- ** table. We need to generate the font table symbol entry.
- */
-
- switch (prior_target_frame->b_tag)
- {
- case sar_k_null_frame:
- font_table_entry =
- sem_create_value_entry ((char*)&font_item, sizeof(long),
- sym_k_font_table_value);
- font_table_entry->b_table_count = 1;
-
- /*
- * If we are dealing with an indirect reference in the table,
- * make it a valref node so we reference it correctly.
- */
- if (font_item->obj_header.az_name != NULL)
- {
- sym_value_entry_type *font_save;
-
- font_save = font_item;
- font_item = sem_create_value_entry (0, 0, font_save->b_type);
- font_item->b_type = font_save->b_type;
- font_item->obj_header.b_flags = sym_m_private;
- font_item->b_expr_opr = sym_k_valref_op;
- font_item->az_exp_op1 = font_save;
- }
-
- font_table_entry->az_first_table_value = font_item;
-
- break;
-
- case sar_k_value_frame:
- {
- int count;
- sym_value_entry_type *last_font_item;
-
- font_table_entry = (sym_value_entry_type *)
- prior_target_frame->value.az_symbol_entry;
- for (count = 0,
- last_font_item = font_table_entry->az_first_table_value;
-
- last_font_item->az_next_table_value != NULL;
-
- last_font_item =
- last_font_item->az_next_table_value)
- count++;
-
- if (count >= sym_k_max_list_count)
- diag_issue_diagnostic
- (d_too_many,
- _sar_source_position( font_frame ),
- diag_value_text( sym_k_font_value ),
- diag_value_text( sym_k_font_table_value ),
- sym_k_max_list_count );
- else
- {
- /*
- * If we are dealing with an indirect reference in the table,
- * make it a valref node so we reference it correctly.
- */
- if (font_item->obj_header.az_name != NULL)
- {
- sym_value_entry_type *font_save;
-
- font_save = font_item;
- font_item = sem_create_value_entry (0, 0, font_save->b_type);
- font_item->b_type = font_save->b_type;
- font_item->obj_header.b_flags = sym_m_private;
- font_item->b_expr_opr = sym_k_valref_op;
- font_item->az_exp_op1 = font_save;
- }
-
- last_font_item->az_next_table_value = font_item;
- font_table_entry->b_table_count = count + 1;
- }
- break;
- }
-
- default:
- _assert( FALSE, "prior frame in error" );
- }
-
- /*
- ** font item needs to be marked as a table entry
- */
- font_item->b_aux_flags |= sym_m_table_entry;
- font_item->az_next_table_value = NULL;
-
- /*
- ** initialize the target frame
- */
- _sar_move_source_info (target_frame, keyword_frame);
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = sym_k_font_table_value;
- target_frame->b_flags = sym_m_private;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) font_table_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds a item for a font table. This font table
-** is a list of symbol table entries of font items.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame frame holding the font item generated
-** charset_frame token or null frame holding charset token
-** font_frame value frame specifying the font value
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** target_frame
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** copy the font value unless it is unnamed
-**
-**--
-**/
-
-void sar_make_font_item(target_frame, charset_frame, font_frame)
-
-yystype *target_frame;
-yystype *charset_frame;
-yystype *font_frame;
-
-{
- sym_value_entry_type *font_value_entry;
- int item_type;
-
- _assert( font_frame->b_tag == sar_k_value_frame, "font exp is missing" );
-
- font_value_entry =
- (sym_value_entry_type *) font_frame->value.az_symbol_entry;
-
- if ((font_frame->b_flags & sym_m_forward_ref) != 0)
- {
- diag_issue_diagnostic
- (d_undefined,
- _sar_source_position(font_frame),
- "font entry",
- font_value_entry->obj_header.az_name->c_text);
- }
-
- item_type = font_value_entry->b_type;
-
- switch (item_type)
- {
- case sym_k_font_value:
- case sym_k_fontset_value:
- {
- int charset;
-
- charset = font_value_entry->b_charset;
-
- /*
- ** If the attr_frame is not null, it must be a value frame with contains
- ** a pointer to the value entry for the userdefined charset, or a token frame
- ** which contains the charset token subclass.
- */
- switch (charset_frame->b_tag)
- {
- case sar_k_value_frame:
- {
- sym_value_entry_type * az_value_entry;
-
- az_value_entry = (sym_value_entry_type *)charset_frame->value.az_symbol_entry;
- font_value_entry->b_charset = az_value_entry->b_charset;
- font_value_entry->az_charset_value =
- az_value_entry->az_charset_value;
- break;
- }
-
- case sar_k_token_frame:
- {
- key_keytable_entry_type *keyword_entry;
-
- keyword_entry = (key_keytable_entry_type *)
- charset_frame->value.az_keyword_entry;
- font_value_entry->b_charset =
- sem_map_subclass_to_charset( keyword_entry->b_subclass );
- break;
- }
- }
-
- break;
- }
-
- case sym_k_error_value:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_position( font_frame ),
- diag_value_text( item_type ),
- diag_value_text( sym_k_font_value ) );
-
- item_type = sym_k_error_value;
- font_value_entry = (sym_value_entry_type *) sym_az_error_value_entry;
- }
-
- /*
- ** initialize the target frame
- */
-
- _sar_move_source_info( target_frame, font_frame );
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = item_type;
- target_frame->b_flags = sym_m_private;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) font_value_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds a font value.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame frame holding the font item generated
-** charset_frame token or null frame holding charset token
-** value_frame value frame specifying the font value
-** keyword_frame frame to use as locator for result
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** target_frame
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** create a font symbol table entry
-**
-**--
-**/
-
-void sar_make_font(target_frame, charset_frame, value_frame, keyword_frame)
-
-yystype *target_frame;
-yystype *charset_frame;
-yystype *value_frame;
-yystype *keyword_frame;
-
-{
- sym_value_entry_type *font_value_entry;
- sym_value_entry_type *value_entry;
-
- _assert( value_frame->b_tag == sar_k_value_frame, "font name is missing" );
-
- font_value_entry = sem_create_value_entry ("", 0, sym_k_font_value );
- font_value_entry->b_type = sym_k_font_value;
- font_value_entry->obj_header.b_flags = sym_m_private;
- font_value_entry->b_expr_opr = sym_k_coerce_op;
-
- if ((value_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (value_frame,
- (char*)&(font_value_entry->az_exp_op1),
- sym_k_patch_add);
- else
- {
- value_entry =
- (sym_value_entry_type *) value_frame->value.az_symbol_entry;
- font_value_entry->az_exp_op1 = value_entry;
- }
-
-
- /*
- ** If the attr_frame is not null, it must be a value frame with contains
- ** a pointer to the value entry for the userdefined charset, or a token frame
- ** which contains the charset token subclass.
- */
- switch (charset_frame->b_tag)
- {
- case sar_k_value_frame:
- {
- sym_value_entry_type * az_value_entry;
-
- az_value_entry = (sym_value_entry_type *)
- charset_frame->value.az_symbol_entry;
-
- font_value_entry->b_charset = az_value_entry->b_charset;
-/* BEGIN HAL Fix CR 5266 */
- font_value_entry->az_charset_value = az_value_entry;
-/* END HAL Fix CR 5266 */
- break;
- }
-
- case sar_k_token_frame:
- {
- key_keytable_entry_type *keyword_entry;
-
- keyword_entry = (key_keytable_entry_type *)
- charset_frame->value.az_keyword_entry;
- font_value_entry->b_charset =
- sem_map_subclass_to_charset( keyword_entry->b_subclass );
- break;
- }
-
- default:
-/* BEGIN OSF Fix CR 5443 */
- font_value_entry->b_charset = Uil_lex_l_user_default_charset;
-/* END OSF Fix CR 5443 */
- break;
- }
-
- /*
- ** initialize the target frame
- */
- _sar_move_source_info( target_frame, keyword_frame );
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = sym_k_font_value;
- target_frame->b_flags = sym_m_private;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) font_value_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds a fontset value.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame frame holding the font item generated
-** charset_frame token or null frame holding charset token
-** value_frame value frame specifying the font value
-** keyword_frame frame to use as locator for result
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** target_frame
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** create a font symbol table entry
-**
-**--
-**/
-
-void sar_make_fontset(target_frame, charset_frame, value_frame, keyword_frame)
-
-yystype *target_frame;
-yystype *charset_frame;
-yystype *value_frame;
-yystype *keyword_frame;
-
-{
- sym_value_entry_type *font_value_entry;
- sym_value_entry_type *value_entry;
-
- _assert( value_frame->b_tag == sar_k_value_frame, "font name is missing" );
-
- font_value_entry = sem_create_value_entry ("", 0, sym_k_fontset_value );
- font_value_entry->b_type = sym_k_fontset_value;
- font_value_entry->obj_header.b_flags = sym_m_private;
- font_value_entry->b_expr_opr = sym_k_coerce_op;
-
- if ((value_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (value_frame,
- (char*)&(font_value_entry->az_exp_op1),
- sym_k_patch_add);
- else
- {
- value_entry =
- (sym_value_entry_type *) value_frame->value.az_symbol_entry;
- font_value_entry->az_exp_op1 = value_entry;
- }
-
-
- /*
- ** If the attr_frame is not null, it must be a value frame with contains
- ** a pointer to the value entry for the userdefined charset, or a token frame
- ** which contains the charset token subclass.
- */
- switch (charset_frame->b_tag)
- {
- case sar_k_value_frame:
- {
- sym_value_entry_type * az_value_entry;
-
- az_value_entry = (sym_value_entry_type *)
- charset_frame->value.az_symbol_entry;
-
- font_value_entry->b_charset = az_value_entry->b_charset;
-/* BEGIN HAL Fix CR 5266 */
- font_value_entry->az_charset_value = az_value_entry;
-/* END HAL Fix CR 5266 */
- break;
- }
-
- case sar_k_token_frame:
- {
- key_keytable_entry_type *keyword_entry;
-
- keyword_entry = (key_keytable_entry_type *)
- charset_frame->value.az_keyword_entry;
- font_value_entry->b_charset =
- sem_map_subclass_to_charset( keyword_entry->b_subclass );
- break;
- }
-
- default:
-/* BEGIN OSF Fix CR 5443 */
- font_value_entry->b_charset = Uil_lex_l_user_default_charset;
-/* END OSF Fix CR 5443 */
- break;
- }
-
- /*
- ** initialize the target frame
- */
- _sar_move_source_info( target_frame, keyword_frame );
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = sym_k_fontset_value;
- target_frame->b_flags = sym_m_private;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) font_value_entry;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds a color item which is a temporary respository
-** to hold data for a single color to be placed in a color table. The
-** color item is deleted when the color table is built by
-** sar_make_color_table.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame frame holding the color item generated
-** color_frame token or value frame giving the color
-** letter_frame value frame specifying the letter to use for color
-** keyword_frame frame to use as locator for result
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** target_frame
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** create a color item symbol table entry
-**
-**--
-**/
-
-void sar_make_color_item
- (target_frame, color_frame, letter_frame )
-
-yystype *target_frame;
-yystype *color_frame;
-yystype *letter_frame;
-
-{
- sym_color_item_entry_type *item_entry;
- sym_value_entry_type *letter_entry;
-
- _assert( letter_frame->b_tag == sar_k_value_frame, "letter frame missing" );
-
- /*
- ** initialize the target frame
- */
- _sar_move_source_info( target_frame, color_frame );
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = 0;
- target_frame->b_flags = 0;
- target_frame->value.az_symbol_entry = 0;
-
- /*
- ** The color can be either a color value or the keyword background or
- ** foreground. Want to step up:
- ** target_frame->b_tag: with either sar_k_value_frame for no error
- ** or sar_k_null_frame for an error
- ** color_entry: color value if there is one
- ** 0 for background
- ** 1 for foreground
- */
-
- /*
- ** Allocate the color item and fill it in
- */
-
- item_entry = (sym_color_item_entry_type *)
- sem_allocate_node(sym_k_color_item_entry,
- sym_k_color_item_entry_size );
- _sar_save_source_pos (&item_entry->header, color_frame);
-
- item_entry->b_index = 0;
- item_entry->az_next = NULL;
-
- switch (color_frame->b_tag)
- {
- case sar_k_token_frame:
- {
- key_keytable_entry_type *keyword_entry;
-
- /*
- ** This is the foreground or background case
- */
-
- keyword_entry = color_frame->value.az_keyword_entry;
-
- switch (keyword_entry->b_token)
- {
- case BACKGROUND:
- item_entry->az_color = (sym_value_entry_type *) URMColorTableBG;
- break;
-
- case FOREGROUND:
- item_entry->az_color = (sym_value_entry_type *) URMColorTableFG;
- break;
-
- default:
- _assert( FALSE, "missing keyword frame" );
- }
-
- break;
- }
-
- case sar_k_value_frame:
-
- if ((color_frame->b_flags & sym_m_forward_ref) != 0)
- {
- sym_value_entry_type *diag_value;
-
- diag_value = (sym_value_entry_type *)
- color_frame->value.az_symbol_entry;
- diag_issue_diagnostic
- (d_undefined,
- _sar_source_position(color_frame),
- "color entry",
- diag_value->obj_header.az_name->c_text);
- }
- else
- {
- item_entry->az_color =
- (sym_value_entry_type *) color_frame->value.az_symbol_entry;
- }
- break;
-
- default:
- _assert( FALSE, "color frame missing" );
- }
-
- /*
- ** Letter frame has already been checked in the grammar to be a character
- ** string. Need to further check that it has a length of 1.
- */
-
- letter_entry =
- (sym_value_entry_type *) letter_frame->value.az_symbol_entry;
-
- if (letter_entry->w_length != 1)
- {
- diag_issue_diagnostic
- ( d_single_letter,
- _sar_source_position( letter_frame ) );
-
- target_frame->b_tag = sar_k_null_frame;
- return;
- }
-
- item_entry->b_letter = letter_entry->value.c_value[0];
-
- /*
- ** If the tag is in error - return
- */
-
- if (target_frame->b_tag == sar_k_null_frame)
- return;
-
- /*
- ** Save source information
- */
-
- _sar_save_source_info ( &item_entry->header, color_frame, letter_frame);
-
- target_frame->value.az_symbol_entry = (sym_entry_type *) item_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds a list of the color items that are used to
-** produce the color table. Each color is checked to see that
-** its letter is unique. The new color item is placed on the
-** front of the list.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame frame holding the color item list
-** item_frame color item to be added to list
-** prior_target_frame existing color list
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** target_frame
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_append_color_item(target_frame, item_frame, prior_target_frame)
-
-yystype *target_frame;
-yystype *item_frame;
-yystype *prior_target_frame;
-
-{
- sym_color_item_entry_type *item_entry;
- sym_color_item_entry_type *prior_item_entry;
-
- /*
- ** Tag for the prior_target frame indicates if this is the first
- ** or a subsequent color item on the list.
- */
-
- switch (prior_target_frame->b_tag)
- {
- case sar_k_null_frame:
- prior_item_entry = NULL;
- break;
-
- case sar_k_value_frame:
- prior_item_entry =
- (sym_color_item_entry_type *)
- prior_target_frame->value.az_symbol_entry;
- break;
-
- default:
- _assert( FALSE, "prior frame missing" );
- }
-
- /*
- ** initialize the target frame
- */
-
- _sar_move_source_info( target_frame, item_frame );
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = 0;
- target_frame->b_flags = 0;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) prior_item_entry;
-
- /*
- ** Need to verify that the letter associated with the current color
- ** item is unique.
- */
-
- switch (item_frame->b_tag)
- {
- case sar_k_value_frame:
- {
- sym_color_item_entry_type *next_item_entry;
-
- item_entry =
- (sym_color_item_entry_type *) item_frame->value.az_symbol_entry;
-
- for (next_item_entry = prior_item_entry;
- next_item_entry != NULL;
- next_item_entry = next_item_entry->az_next)
- if (next_item_entry->b_letter == item_entry->b_letter)
- {
- diag_issue_diagnostic
- ( d_dup_letter,
- _sar_source_position( item_frame ) );
-
- return;
- }
-
- item_entry->az_next = prior_item_entry;
-
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) item_entry;
-
- return;
- }
-
- case sar_k_null_frame:
- return;
-
- default:
- _assert( FALSE, "list frame missing" );
- }
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds a color table. It takes a series of
-** color items and repackages them within the color table.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame frame for holding the color table
-** list_frame frame holding first of color item lists
-** keyword_frame frame for COLOR_TABLE keyword
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** target_frame
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sar_make_color_table(target_frame, list_frame, keyword_frame)
-
-yystype *target_frame;
-yystype *list_frame;
-yystype *keyword_frame;
-
-{
- sym_color_item_entry_type *next_item_entry;
- sym_value_entry_type *color_table_entry;
- int target_type;
-
- /*
- ** Tag for the list frame indicates if there are any color items.
- */
-
- switch (list_frame->b_tag)
- {
- case sar_k_null_frame:
- target_type = sym_k_error_value;
- color_table_entry = sym_az_error_value_entry;
- break;
-
- case sar_k_value_frame:
- {
- int count;
- int index;
-
- count = 0;
- index = 1;
-
- for (next_item_entry =
- (sym_color_item_entry_type *) list_frame->value.az_symbol_entry;
- next_item_entry != NULL;
- next_item_entry = next_item_entry->az_next)
- {
- count++;
- switch ((long)next_item_entry->az_color)
- {
- case 0:
- next_item_entry->b_index = URMColorTableBG;
- break;
- case 1:
- next_item_entry->b_index = URMColorTableFG;
- break;
- default:
- next_item_entry->b_index = (unsigned char) ++index;
- break;
- }
- }
-
- if (index >= sym_k_max_color_count)
- {
- diag_issue_diagnostic
- (d_too_many,
- _sar_source_position( keyword_frame ),
- diag_value_text( sym_k_color_value ),
- diag_value_text( sym_k_color_table_value ),
- sym_k_max_color_count );
- target_type = sym_k_error_value;
- color_table_entry = sym_az_error_value_entry;
- break;
- }
-
- color_table_entry = (sym_value_entry_type *)
- sem_allocate_node (sym_k_value_entry, sym_k_value_entry_size);
- color_table_entry->value.z_color = (sym_color_element *)
- XtCalloc(1,sizeof(sym_color_element)*count);
- color_table_entry->b_type = sym_k_color_table_value;
- color_table_entry->b_table_count = (unsigned char) count;
- color_table_entry->b_max_index = (unsigned char) index;
- color_table_entry->obj_header.b_flags = sym_m_private;
-
- _sar_save_source_pos ( &color_table_entry->header, list_frame);
-
- for (index = 0,
- next_item_entry = (sym_color_item_entry_type *)
- list_frame->value.az_symbol_entry;
- next_item_entry != NULL;
- index++ )
- {
- sym_color_item_entry_type *temp;
-
- color_table_entry->value.z_color[index].b_index =
- next_item_entry->b_index;
- color_table_entry->value.z_color[index].b_letter =
- next_item_entry->b_letter;
- color_table_entry->value.z_color[index].az_color =
- next_item_entry->az_color;
-
- temp = next_item_entry;
- next_item_entry = next_item_entry->az_next;
- sem_free_node(( sym_entry_type *) temp );
- }
-
- target_type = sym_k_color_table_value;
-
- break;
-
- }
-
- default:
- _assert( FALSE, "list frame missing" );
- }
-
- /*
- ** initialize the target frame
- */
-
- _sar_move_source_info( target_frame, keyword_frame );
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = target_type;
- target_frame->b_flags = sym_m_private;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) color_table_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds a color value. Input to the function is a
-** character string give the color name and an option keyword specifying
-** display of the color on a monochrome device.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame frame to hold the created color value
-** color_frame frame giving the character string specifying the color
-** mono_frame frame describing monochrome attribute
-** keyword_frame frame pointing to COLOR keyword
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** target_frame
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** icon value is created
-**
-**--
-**/
-
-void sar_make_color(target_frame, color_frame, mono_frame, keyword_frame)
-
-yystype *target_frame;
-yystype *color_frame;
-yystype *mono_frame;
-yystype *keyword_frame;
-
-{
- sym_value_entry_type *color_entry;
- sym_value_entry_type *value_entry;
- int state;
-
- /*
- ** Mono frame can point to the keyword FOREGROUND or BACKGROUND
- ** or be null meaning unspecified.
- */
-
- switch (mono_frame->b_tag)
- {
- case sar_k_null_frame:
- state = sym_k_unspecified_color;
- break;
-
- case sar_k_token_frame:
-
- switch (mono_frame->value.az_keyword_entry->b_token)
- {
- case BACKGROUND:
- state = sym_k_background_color;
- break;
-
- case FOREGROUND:
- state = sym_k_foreground_color;
- break;
-
- default:
- _assert( FALSE, "monochrome info missing" );
- }
- break;
-
- default:
- _assert( FALSE, "monochrome info missing" );
- }
-
- /*
- ** Transform the char 8 value entry into a color value.
- ** Before doing this, we need to insure that the string
- ** is not in error or named.
- */
-
- _assert( color_frame->b_tag == sar_k_value_frame, "value missing" );
-
- color_entry =
- sem_create_value_entry
- ( "",
- 0,
- sym_k_color_value );
- color_entry->b_type = sym_k_color_value;
- color_entry->obj_header.b_flags = sym_m_private;
- color_entry->b_arg_type = state;
- color_entry->b_expr_opr = sym_k_coerce_op;
-
- if ((color_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref (color_frame,
- (char*)&(color_entry->az_exp_op1),
- sym_k_patch_add);
- else
- {
- value_entry =
- (sym_value_entry_type *) color_frame->value.az_symbol_entry;
- color_entry->az_exp_op1 = value_entry;
- }
-
- /*
- ** initialize the target frame
- */
-
- _sar_move_source_info( target_frame, keyword_frame );
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = sym_k_color_value;
- target_frame->b_flags = sym_m_private;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) color_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function builds a icon value. Input to the function is a
-** color table and a list of string that represent the rows of the
-** icon.
-**
-** FORMAL PARAMETERS:
-**
-** target_frame frame to hold the created icon value
-** table_frame frame describing the color table
-** list_frame frame pointing to the list of row strings
-** keyword_frame frame pointing to the icon keyword
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** target_frame
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** icon value is created
-**
-**--
-**/
-
-void sar_make_icon(target_frame, list_frame, table_frame, keyword_frame)
-
-yystype *target_frame;
-yystype *table_frame;
-yystype *list_frame;
-yystype *keyword_frame;
-
-{
- sym_value_entry_type *table_entry;
- sym_value_entry_type *icon_entry;
- sym_value_entry_type *head_row_entry;
- int target_type;
- int width;
- int height;
-
- /*
- ** Table_frame specifies the color table for the icon. If this
- ** argument is null, use the standard color table.
- */
-
- target_type = sym_k_icon_value;
- height = 0;
- width = 0;
-
- switch (table_frame->b_tag)
- {
- case sar_k_null_frame:
- table_entry = standard_color_table();
- break;
-
- case sar_k_value_frame:
- table_entry =
- (sym_value_entry_type *) table_frame->value.az_symbol_entry;
-
- /*
- ** Check that the table is indeed a color table
- ** Forward references are set up once the icon entry is created
- */
-
- if ((table_frame->b_flags & sym_m_forward_ref) != 0)
- table_entry = NULL;
- else
- switch (table_entry->b_type)
- {
- case sym_k_color_table_value:
- break;
-
- case sym_k_error_value:
- default:
-/* BEGIN OSF Fix CR 5421 */
- /*
- * If the value_frame is not a color_table_value, print
- * a diagnostic to flag it as an error further down the
- * road. Otherwise, if it is exported, will cause problems.
- */
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_position(table_frame),
- diag_value_text(table_entry->b_type),
- diag_value_text(sym_k_color_table_value) );
-/* END OSF Fix CR 5421 */
-
- target_type = sym_k_error_value;
- table_entry = standard_color_table();
- break;
- }
- break;
-
- default:
- _assert( FALSE, "color table missing" );
- }
-
- /*
- ** Now start checking the rows of the table. If the tag on list
- ** frame is null, there are no rows (this is due to prior errors).
- ** Rows are linked in reverse order. We reorder them at this
- ** point since it simplifies .uid generation.
- */
-
- switch (list_frame->b_tag)
- {
- case sar_k_null_frame:
- target_type = sym_k_error_value;
- break;
-
- case sar_k_value_frame:
- {
- sym_value_entry_type *row_entry;
- sym_value_entry_type *temp_row_entry;
-
-
- /*
- ** Reorder the rows
- */
-
- for (row_entry =
- (sym_value_entry_type *) list_frame->value.az_symbol_entry,
- head_row_entry = NULL;
-
- row_entry != NULL;
-
- temp_row_entry = row_entry,
- row_entry = row_entry->az_next_table_value,
- temp_row_entry->az_next_table_value =
- head_row_entry,
- head_row_entry = temp_row_entry)
- ;
-
- for (row_entry = head_row_entry,
- width = row_entry->w_length;
-
- row_entry != NULL;
-
- row_entry = row_entry->az_next_table_value)
- {
-/* BEGIN OSF Fix CR 5420 */
- /*
- * Check to make sure each row_entry is a character string.
- * If it isn't, print a diagnostic message indicating an error.
- */
- if ((row_entry->b_type != sym_k_char_8_value) &&
- (row_entry->b_type != sym_k_localized_string_value))
- {
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_pos2(row_entry),
- diag_value_text(row_entry->b_type),
- diag_value_text(sym_k_char_8_value) );
- target_type = sym_k_error_value;
- }
-/* END OSF Fix CR 5420 */
-
- height++;
-
- if (width != row_entry->w_length)
- {
- diag_issue_diagnostic
- ( d_icon_width,
- row_entry->header.az_src_rec, /* line info */
- row_entry->header.b_type, /* column infor */
- height );
- target_type = sym_k_error_value;
- }
-
- }
- break;
- }
-
- default:
- _assert( FALSE, "row list missing" );
- }
-
- if (width > sym_k_max_list_count)
- {
- diag_issue_diagnostic
- ( d_too_many,
- _sar_source_position( keyword_frame ),
- "column", diag_value_text( sym_k_icon_value ),
- sym_k_max_list_count );
-
- target_type = sym_k_error_value;
- }
-
- if (height > sym_k_max_list_count)
- {
- diag_issue_diagnostic
- ( d_too_many,
- _sar_source_position( keyword_frame ),
- "row", diag_value_text( sym_k_icon_value ),
- sym_k_max_list_count );
-
- target_type = sym_k_error_value;
- }
-
-
- /*
- ** If we have no errors, allocate the icon
- */
-
- if (target_type == sym_k_error_value)
- icon_entry = sym_az_error_value_entry;
- else
- {
- icon_entry = (sym_value_entry_type *)
- sem_allocate_node (sym_k_value_entry, sym_k_value_entry_size);
- icon_entry->value.z_icon = (sym_icon_element *)
- XtCalloc(1,sizeof(sym_icon_element));
- icon_entry->b_type = sym_k_icon_value;
- icon_entry->value.z_icon->w_height = height;
- icon_entry->value.z_icon->w_width = width;
- icon_entry->value.z_icon->az_color_table = table_entry;
- icon_entry->value.z_icon->az_rows = head_row_entry;
- icon_entry->obj_header.b_flags = sym_m_private;
-
- _sar_save_source_pos (&icon_entry->header, list_frame );
-
- if ((table_frame->b_flags & sym_m_forward_ref) != 0)
- sym_make_value_forward_ref
- (table_frame,
- (char*)&icon_entry->value.z_icon->az_color_table,
- sym_k_patch_add);
- }
-
- /*
- ** initialize the target frame
- */
-
- _sar_move_source_info( target_frame, keyword_frame );
- target_frame->b_tag = sar_k_value_frame;
- target_frame->b_type = target_type;
- target_frame->b_flags = sym_m_private;
- target_frame->value.az_symbol_entry =
- (sym_entry_type *) icon_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function defines the standard color table.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** color_table local static storage
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** address of standard color table entry
-**
-** SIDE EFFECTS:
-**
-** may allocate the standard color table
-**
-**--
-**/
-
-static sym_value_entry_type *standard_color_table()
-{
- static sym_value_entry_type *color_table = NULL;
-
- if (color_table == NULL)
- {
- color_table = (sym_value_entry_type *)
- sem_allocate_node (sym_k_value_entry,
- sym_k_value_entry_size);
- color_table->value.z_color = (sym_color_element *)
- XtCalloc(1,sizeof(sym_color_element)*2);
-
- color_table->b_type = sym_k_color_table_value;
- color_table->b_table_count = 2;
- color_table->b_max_index = 1;
- color_table->obj_header.b_flags = sym_m_private;
-
- color_table->header.az_src_rec = src_az_module_source_record;
-
- color_table->value.z_color[0].b_index = URMColorTableBG;
- color_table->value.z_color[0].b_letter = ' ';
- color_table->value.z_color[0].az_color =
- (sym_value_entry_type *) URMColorTableBG;
-
- color_table->value.z_color[1].b_index = URMColorTableFG;
- color_table->value.z_color[1].b_letter = '*';
- color_table->value.z_color[1].az_color =
- (sym_value_entry_type *) URMColorTableFG;
-
- }
-
- return color_table;
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilSemCSet.c /main/10 1997/03/12 15:21:53 dbl $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This file contains and routines related to the semantics of
-** character sets.
-** semantic validation.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include <Xm/Xm.h>
-
-#include "UilDefI.h"
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function returns a pointer to a character set name given
-** its sym_k_..._charset code and possibly a userdefined charset
-** value entry.
-**
-** FORMAL PARAMETERS:
-**
-** l_charset charset of the string (token value)
-** az_charset_entry charset of the string (symbol table value entry)
-**
-** IMPLICIT INPUTS:
-**
-** charset data tables
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** pointer to name (must NOT be freed)
-**
-** SIDE EFFECTS:
-**
-** error messages may be issued for objects that are still undefined
-** or of the wrong type
-**
-**--
-**/
-
-char *sem_charset_name (l_charset, az_charset_entry)
- int l_charset;
- sym_value_entry_type *az_charset_entry;
-
-{
-
-int charset; /* mapped character set */
-
-charset = sem_map_subclass_to_charset (l_charset);
-switch ( charset )
- {
- case sym_k_fontlist_default_tag:
- return XmFONTLIST_DEFAULT_TAG;
- case sym_k_userdefined_charset:
- /*
- ** If the charset is user-defined, then fetch info from the symbol
- ** table entry for it.
- */
- _assert (az_charset_entry!=NULL, "null userdefined charset entry");
- return az_charset_entry->value.c_value;
- default:
- return charset_xmstring_names_table[charset];
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function returns information about the character set specified
-** (writing direction and sixteen_bit properties).
-**
-** FORMAL PARAMETERS:
-**
-** l_charset charset of the string (token value)
-** az_charset_entry charset of the string (symbol table value entry)
-** direction string writing direction
-** sixteen_bit Boolean return value
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void sem_charset_info
- (l_charset, az_charset_entry, write_direction, parse_direction, sixteen_bit)
-
-int l_charset;
-sym_value_entry_type *az_charset_entry;
-int *write_direction;
-int *parse_direction;
-int *sixteen_bit;
-
-{
-
-int charset; /* mapped character set */
-
-charset = sem_map_subclass_to_charset (l_charset);
-switch (charset)
- {
- /*
- ** If the charset is user-defined, then fetch info from the symbol
- ** table entry for it.
- */
- case sym_k_userdefined_charset:
- {
- *write_direction = az_charset_entry->b_direction;
- *parse_direction = az_charset_entry->b_direction;
- *sixteen_bit = (az_charset_entry->b_aux_flags &
- sym_m_sixteen_bit) != 0;
- break;
- }
- default:
- {
- *write_direction = charset_writing_direction_table[charset];
- *parse_direction = charset_parsing_direction_table[charset];
- if ( charset_character_size_table[charset] != sym_k_onebyte_charsize )
- *sixteen_bit = TRUE;
- else
- *sixteen_bit = FALSE;
- break;
- }
- }
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function returns the charset id corresponding to the
-** charset specified in a $LANG variable. User-defined character
-** sets are not recognized - it must be one available in the
-** the compiler tables.
-**
-** The name match is case-insensitive.
-**
-** FORMAL PARAMETERS:
-**
-** lang_charset string naming a character set
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** 0 no match - character set not found
-** >0 character set code from sym_k_..._charset.
-** sym_k_userdefined_charset is never returned.
-**
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-int sem_charset_lang_name (lang_charset)
- char *lang_charset;
-
-{
-
-char uname[200]; /* upper-case character set name */
-int ndx; /* loop index */
-
-
-/*
- * Convert name to upper case, then search table (which is already in
- * upper case).
- */
-strcpy (uname, lang_charset);
-for ( ndx=0 ; ndx<(int)strlen(uname) ; ndx++ )
- uname[ndx] = _upper (uname[ndx]);
-
-for ( ndx=0 ; ndx<(int)charset_lang_table_max ; ndx++ )
- if ( strcmp(uname,charset_lang_names_table[ndx]) == 0 )
- return (int)charset_lang_codes_table[ndx];
-return 0;
-
-}
-
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilSemVal.c /main/18 1997/09/15 14:15:21 cshi $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contains the second pass routines for performing
-** semantic validation.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include <stdlib.h>
-#include <setjmp.h>
-#include <Mrm/MrmAppl.h>
-#include <Xm/XmStrDefs.h>
-
-
-#include "UilDefI.h"
-
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-** The order of these constants is significant. The constants lower in
-** value than error_arg_type are basically numeric types and various
-** conversions may be done on those types. Those constants are compared
-** numerically with error_arg_type to determine whether they may be
-** converted. Furthermore, the numeric_convert_table is indexed by
-** those constants. If you are adding new arg types, add before error_arg_type
-** if it is a numeric type, but also remember to update the numeric_
-** convert_table below to have an entry for that type. Add the new type
-** after error_arg_type if it is not numeric. lstr_arg_type must be after
-** char_arg_type and before cstr_arg_type. When done, update all the constants
-** to be sequential.
-**
-**/
-
-#define boolean_arg_type 0
-#define integer_arg_type 1
-#define single_float_arg_type 2
-#define float_arg_type 3
-#define horizontal_integer_arg_type 4
-#define vertical_integer_arg_type 5
-#define horizontal_float_arg_type 6
-#define vertical_float_arg_type 7
-#define error_arg_type 8
-
-#define char_arg_type 9
-#define lstr_arg_type 10
-#define cstr_arg_type 11
-#define keysym_arg_type 12
-#define font_arg_type 13
-#define color_arg_type 14
-#define xbitmap_arg_type 15
-#define reason_arg_type 16
-#define argument_arg_type 17
-#define font_table_arg_type 18
-#define wcstr_arg_type 19
-#define fontset_arg_type 20
-/* BEGIN HaL fix CR 5429 */
-#define classrec_arg_type 21
-/* END HaL Fix CR 5429 */
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-static unsigned int ref_chk_value = 0;
-static short in_expr = 0;
-static int cycle_id = 1;
-
-/*
-** This table is indexed by arg_types defined above that are less than
-** error_arg_type.
-**/
-
-static int ( * numeric_convert_table[])() = {
- 0,
- sem_convert_to_integer,
- sem_convert_to_single_float,
- sem_convert_to_float,
- sem_convert_to_integer,
- sem_convert_to_integer,
- sem_convert_to_float,
- sem_convert_to_float,
- sem_convert_to_error };
-
-/*
- * The next two definitions must match value sets defining
- * expression operators in UilSymDef.h
- */
-
-static unsigned int legal_operand_type[ ] = {
- /* unused */ 0,
- /* not */ 1 << sym_k_bool_value | 1 << sym_k_integer_value,
- /* unary plus */ 1 << sym_k_integer_value |
- 1 << sym_k_horizontal_integer_value |
- 1 << sym_k_vertical_integer_value |
- 1 << sym_k_float_value |
- 1 << sym_k_horizontal_float_value |
- 1 << sym_k_vertical_float_value |
- 1 << sym_k_single_float_value,
- /* unary minus */ 1 << sym_k_integer_value |
- 1 << sym_k_horizontal_integer_value |
- 1 << sym_k_vertical_integer_value |
- 1 << sym_k_float_value |
- 1 << sym_k_horizontal_float_value |
- 1 << sym_k_vertical_float_value |
- 1 << sym_k_single_float_value,
- /* comp_str */ 1 << sym_k_char_8_value |
- 1 << sym_k_localized_string_value |
- 1 << sym_k_compound_string_value,
- /* wchar_str */ 1 << sym_k_localized_string_value,
- /* multiply */ 1 << sym_k_integer_value |
- 1 << sym_k_horizontal_integer_value |
- 1 << sym_k_vertical_integer_value |
- 1 << sym_k_float_value |
- 1 << sym_k_horizontal_float_value |
- 1 << sym_k_vertical_float_value |
- 1 << sym_k_single_float_value,
- /* divide */ 1 << sym_k_integer_value |
- 1 << sym_k_horizontal_integer_value |
- 1 << sym_k_vertical_integer_value |
- 1 << sym_k_float_value |
- 1 << sym_k_horizontal_float_value |
- 1 << sym_k_vertical_float_value |
- 1 << sym_k_single_float_value,
- /* add */ 1 << sym_k_integer_value |
- 1 << sym_k_horizontal_integer_value |
- 1 << sym_k_vertical_integer_value |
- 1 << sym_k_float_value |
- 1 << sym_k_horizontal_float_value |
- 1 << sym_k_vertical_float_value |
- 1 << sym_k_single_float_value,
- /* subtract */ 1 << sym_k_integer_value |
- 1 << sym_k_horizontal_integer_value |
- 1 << sym_k_vertical_integer_value |
- 1 << sym_k_float_value |
- 1 << sym_k_horizontal_float_value |
- 1 << sym_k_vertical_float_value |
- 1 << sym_k_single_float_value,
- /* left shift */ 1 << sym_k_integer_value,
- /* right shift */ 1 << sym_k_integer_value,
- /* and */ 1 << sym_k_bool_value |
- 1 << sym_k_integer_value |
- 1 << sym_k_char_8_value |
- 1 << sym_k_localized_string_value |
- 1 << sym_k_compound_string_value |
- 1 << sym_k_localized_string_value,
- /* xor */ 1 << sym_k_bool_value | 1 << sym_k_integer_value,
- /* or */ 1 << sym_k_bool_value | 1 << sym_k_integer_value,
- /* cat */ 1 << sym_k_char_8_value |
- 1 << sym_k_compound_string_value |
- 1 << sym_k_localized_string_value,
- /* valref */ 0xFFFFFFFF,
- /* coerce */ 0xFFFFFFFF
- };
-static char *operator_symbol[ ] = {
- /* unused */ "** OPERATOR ERROR**",
- /* not */ "not operator",
- /* unary plus */ "unary plus operator",
- /* unary minus */ "unary minus operator",
- /* comp str */ "compound string function",
- /* wchar str */ "wide_character string function",
- /* multiply */ "multiply operator",
- /* divide */ "divide operator",
- /* add */ "add operator",
- /* subtract */ "subtract operator",
- /* left shift */ "left shift operator",
- /* right shift */ "right shift operator",
- /* and */ "and operator",
- /* xor */ "exclusive or operator",
- /* or */ "or operator",
- /* cat */ "concatenate operator",
- /* coerce */ "coerce operator",
- };
-
-static char *value_text[ ] = {
- /* boolean */ "boolean expression",
- /* integer */ "integer expression",
- /* float */ "floating point expression",
- };
-
-static sym_argument_entry_type **arg_seen;
-static sym_callback_entry_type **reason_seen;
-
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function walks the entire parse tree for the input, and
-** performs semantic validation. It guarantees type matching,
-** that arguments and controls and legal, etc.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_root_entry
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error messages may be issued for objects that are still undefined
-** or of the wrong type
-**
-**--
-**/
-
-void sem_validation ()
-{
-
-/*
- * Allocate storage if required
- */
-if ( arg_seen == NULL )
- arg_seen = (sym_argument_entry_type **)
- XtMalloc (sizeof(sym_argument_entry_type *)*(uil_max_arg+1));
-if ( reason_seen == NULL )
- reason_seen = (sym_callback_entry_type **)
- XtMalloc (sizeof(sym_argument_entry_type *)*(uil_max_reason+1));
-
-/*
- * Walk the parse tree, performing validation on each node which
- * requires it.
- */
-sem_validate_node (( sym_entry_type *)sym_az_root_entry->sections);
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine recursively walks through the parse tree. It
-** ignores any nodes which require no pass 2 validation, and
-** calls a specialized routine for any others. It checks for
-** any requests to terminate.
-**
-** FORMAL PARAMETERS:
-**
-** node current parse tree node
-**
-** IMPLICIT INPUTS:
-**
-** >
-**
-** IMPLICIT OUTPUTS:
-**
-** >
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** may terminate processing
-**
-**--
-**/
-
-void sem_validate_node (node)
- sym_entry_type *node;
-
-{
-
-/*
- * Local variables
- */
-sym_value_entry_type *value_node;
-sym_widget_entry_type *widget_node;
-sym_widget_entry_type *child_node;
-sym_list_entry_type *list_node;
-sym_include_file_entry_type *ifile_node;
-sym_section_entry_type *section_node;
-sym_obj_entry_type *entry_node;
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-sym_control_entry_type *control_entry;
-
-/*
- * Call the status callback routine to report progress and check status
- */
-/* %COMPLETE */
-Uil_percent_complete = 80;
-if ( Uil_cmd_z_command.status_cb != (Uil_continue_type(*)())NULL )
- diag_report_status ();
-
-/*
- * Switch on the node type for validation and recursion.
- */
-if ( node == NULL ) return;
-switch ( node->header.b_tag )
- {
- case sym_k_value_entry:
- value_node = (sym_value_entry_type *) node;
- sem_validate_value_node (value_node);
- break;
- case sym_k_widget_entry:
- case sym_k_gadget_entry:
- case sym_k_child_entry:
- widget_node = (sym_widget_entry_type *) node;
- sem_validate_widget_node (widget_node);
-
- /*
- * Recurse for children and validate all children. Duplicate
- * validation will not occur since sem_validate_widget_node checks
- * bflags for validated flag.
- */
- sem_validate_node (( sym_entry_type *)widget_node->az_controls);
- break;
- case sym_k_list_entry:
- /*
- * recursive entry point for processing controls lists.
- */
- list_node = (sym_list_entry_type *) node;
- if ( list_node->header.b_type != sym_k_control_list )
- break;
- for (list_member=(sym_obj_entry_type *)list_node->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry =
- (sym_nested_list_entry_type *) list_member;
- sem_validate_node (( sym_entry_type *)nested_list_entry->az_list);
- break;
- case sym_k_control_entry:
- control_entry = (sym_control_entry_type *) list_member;
- child_node = (sym_widget_entry_type *)
- control_entry->az_con_obj;
- sem_validate_node (( sym_entry_type *)child_node);
- break;
- }
- break;
- case sym_k_include_file_entry:
- ifile_node = (sym_include_file_entry_type *) node;
- sem_validate_node (( sym_entry_type *)ifile_node->sections);
- break;
- case sym_k_section_entry:
- section_node = (sym_section_entry_type *) node;
- sem_validate_node (( sym_entry_type *)section_node->next);
- switch ( section_node->header.b_type )
- {
- case sym_k_section_tail:
- break;
- default:
- entry_node = (sym_obj_entry_type *) section_node->entries;
- sem_validate_node (( sym_entry_type *)entry_node);
- break;
- }
- break;
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine validates a value node
-**
-** FORMAL PARAMETERS:
-**
-** value_node the symbol table node to be validated.
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** pointer to the value node resulting from the operation (may be
-** different from input)
-**
-** SIDE EFFECTS:
-**
-** error reporting
-**
-**--
-**/
-
-sym_value_entry_type *sem_validate_value_node (value_node)
- sym_value_entry_type *value_node;
-
-{
-
-/*
- * Local variables
- */
-
-
-/*
- * Both evaluation and validation are done by the value evaluation routine
- */
-if ( value_node == NULL )
- return NULL;
-if ( value_node->obj_header.b_flags & sym_m_validated )
- return value_node;
-
-sem_evaluate_value (value_node);
-value_node->obj_header.b_flags |= sym_m_validated;
-return value_node;
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine validates a widget node
-**
-** FORMAL PARAMETERS:
-**
-** widget_node the symbol table node to be validated.
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** SIDE EFFECTS:
-**
-** error reporting
-**
-**--
-**/
-
-void sem_validate_widget_node (widget_node)
- sym_widget_entry_type *widget_node;
-
-{
-
-/*
- * Local variables
- */
-unsigned int widget_type;
-sym_list_entry_type *list_entry; /* for various lists */
-
-/*
- * if this widget has already been validated just return
- */
-if (widget_node->obj_header.b_flags & sym_m_validated)
- return;
-
-/*
- * Pick up widget parameters
- */
-if (widget_node->header.b_tag == sym_k_child_entry)
- widget_type = child_class_table[widget_node->header.b_type];
-else widget_type = widget_node->header.b_type;
-
-/*
- * Validate the arguments. Each argument in the list is validated
- * by an argument validation routine.
- */
-if ( widget_node->az_arguments != NULL )
- {
- int ndx;
- for ( ndx=0 ; ndx<uil_max_arg+1 ; ndx++ )
- arg_seen[ndx] = 0;
- sem_validate_argument_list (widget_node, widget_type,
- widget_node->az_arguments, arg_seen);
- }
-
-/*
- * Validate the callbacks. Each callback is validated by a validation
- * routine
- */
-if ( widget_node->az_callbacks != NULL )
- {
- int ndx;
- for ( ndx=0 ; ndx<uil_max_reason+1 ; ndx++ )
- reason_seen[ndx] = 0;
- sem_validate_callback_list (widget_node, widget_type,
- widget_node->az_callbacks, reason_seen);
- }
-
-/*
- * Validate the controls. Each is validated by a validation routine.
- * Also check the node for cycles.
- */
-if ( widget_node->az_controls != NULL )
- {
- int gadget_count = 0;
-
- list_entry = (sym_list_entry_type *) widget_node->az_controls;
- sem_validate_control_list (widget_node, widget_type,
- list_entry, &gadget_count);
- list_entry->w_gadget_count = gadget_count;
- sem_validate_widget_cycle (list_entry, widget_node->obj_header.az_name);
- }
-
-/*
- * Mark the widget as validated
- */
-widget_node->obj_header.b_flags |= sym_m_validated;
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine validates all the arguments in an argument list.
-** It recurse down nested lists.
-**
-** FORMAL PARAMETERS:
-**
-** widget_node the current widget
-** widget_type the current widget's type
-** list_entry list to be validated
-** seen flag table to detect duplicate arguments
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void sem_validate_argument_list (widget_node, widget_type, list_entry, seen)
- sym_widget_entry_type *widget_node;
- unsigned int widget_type;
- sym_list_entry_type *list_entry;
- sym_argument_entry_type **seen;
-
-{
-
-/*
- * Local variables
- */
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-sym_argument_entry_type *argument_entry;
-/* For fixing DTS 9540 */
-static int nest_count=0;
-static sym_list_entry_type *nest_head = NULL;
-
-
-/*
- * loop down the list
- */
-if ( list_entry == NULL ) return;
-for (list_member=(sym_obj_entry_type *)list_entry->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry = (sym_nested_list_entry_type *) list_member;
- /* Begin fixing DTS 9540 */
- if(!nest_count)
- nest_head = nested_list_entry->az_list;
- nest_count++;
- if(nest_count == 1 || nest_head != nested_list_entry->az_list){
- sem_validate_argument_list (widget_node, widget_type,
- nested_list_entry->az_list, seen);
- nest_count--;
- }else
- diag_issue_diagnostic
- (d_circular_ref,
- _sar_source_pos2(list_entry),
- "argument name");
- /* End fixing DTS 9540 */
- break;
- case sym_k_argument_entry:
- argument_entry = (sym_argument_entry_type *) list_member;
- sem_validate_argument_entry (widget_node, widget_type,
- list_entry, argument_entry, seen);
- break;
- default:
- diag_issue_diagnostic
- ( d_list_item,
- _sar_source_pos2 ( list_entry ),
- diag_tag_text (sym_k_argument_entry),
- diag_tag_text (list_entry->header.b_type),
- diag_tag_text (list_entry->header.b_tag) );
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine performs validation for a single argument entry
-** for the current widget node.
-**
-** FORMAL PARAMETERS:
-**
-** widget_node the current widget
-** widget_type the current widget's type
-** list_entry list entry for current argument entry
-** argument_entry the current argument entry
-** seen flag table to detect duplicate arguments
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error reporting
-**
-**--
-**/
-
-void sem_validate_argument_entry
- (widget_node, widget_type, list_entry, argument_entry, seen)
- sym_widget_entry_type *widget_node;
- unsigned int widget_type;
- sym_list_entry_type *list_entry;
- sym_argument_entry_type *argument_entry;
- sym_argument_entry_type **seen;
-
-{
-
-/*
- * Local variables
- */
-sym_value_entry_type *argname_value_entry;
-sym_value_entry_type *argvalue_value_entry;
-key_keytable_entry_type *keytable_entry;
-sym_argument_entry_type **seen_entry;
-boolean supported_flag;
-unsigned char expected_type, actual_type, actual_tag;
-boolean valid_value;
-
-
-/*
- * ignore error entries, consistency check
- */
-if ( argument_entry->header.b_tag == sym_k_error_entry ) return;
-_assert (argument_entry->header.b_tag==sym_k_argument_entry,
- "unexpected non argument entry");
-
-/*
- * Validate and evaluate the argument name and argument value entries.
- */
-
-sem_validate_node (( sym_entry_type *)argument_entry->az_arg_name);
-
-/*
- * There is no need to validate the value if it is a widget since widgets are
- * validated elsewhere and you can't define widgets in an argument list anyway.
- */
-
-if ( argument_entry->az_arg_value == NULL )
- return;
-
-if ((argument_entry->az_arg_value->header.b_tag != sym_k_widget_entry) &&
- (argument_entry->az_arg_value->header.b_tag != sym_k_gadget_entry))
- sem_validate_node (( sym_entry_type *)argument_entry->az_arg_value);
-
-argname_value_entry = (sym_value_entry_type *) argument_entry->az_arg_name;
-if ( argname_value_entry == NULL )
- {
- diag_issue_diagnostic
- (d_bad_argument,
- _sar_source_pos2(argument_entry),
- "argument name");
- return;
- }
-
-sem_evaluate_value_expr(argname_value_entry);
-_assert (argname_value_entry->header.b_tag==sym_k_value_entry,
- "invalid argument name value_entry");
-if (argname_value_entry->b_type != sym_k_argument_value)
- {
- diag_issue_diagnostic
- (d_list_item,
- _sar_source_pos2(argname_value_entry),
- diag_value_text(argname_value_entry->b_type),
- diag_tag_text(list_entry->header.b_type),
- diag_tag_text(list_entry->header.b_tag));
- return;
- }
-
-argvalue_value_entry = (sym_value_entry_type *) argument_entry->az_arg_value;
-
-/* BEGIN HAL Fix CR 3857 */
-if ((argument_entry->az_arg_value->header.b_tag != sym_k_widget_entry) &&
- (argument_entry->az_arg_value->header.b_tag != sym_k_gadget_entry))
-/* END HAL Fix CR 3857 */
- sem_evaluate_value_expr(argvalue_value_entry);
-
-/*
- * Check for unsupported arguments. Validate constraints.
- * This check is required for known toolkit arguments in
- * toolkit widgets.
- */
-if ( (argname_value_entry->obj_header.b_flags&sym_m_builtin) &&
- (widget_type!=uil_sym_user_defined_object) &&
- (argname_value_entry->obj_header.az_name == NULL) )
- {
- /*
- * Pick up the token keytable entry for the argument.
- * Fork on whether it is a constraint argument
- */
- keytable_entry = (key_keytable_entry_type *)
- argname_value_entry->value.az_data;
- _assert (keytable_entry->b_class==tkn_k_class_argument,
- "unexpected non-argument keytable entry");
- if ( _constraint_check(keytable_entry->b_subclass) )
- sem_validate_constraint_entry (widget_node, argument_entry, widget_type);
- else
- {
- supported_flag = sem_argument_allowed
- (keytable_entry->b_subclass, widget_type);
- if ( ! supported_flag )
- diag_issue_diagnostic
- (d_unsupported,
- _sar_source_pos2(argument_entry),
- keytable_entry->at_name,
- diag_tag_text(argument_entry->header.b_tag),
- diag_object_text(widget_type));
- }
-
- /*
- * Check for duplicate arguments. A warning is issued, but the
- * argument is not removed from the list, since it may occur in
- * an argument list - and the argument list may be referenced in
- * another context where this argument is not duplicated.
- */
- seen_entry = (sym_argument_entry_type **)
- &seen[keytable_entry->b_subclass];
- if ( *seen_entry != NULL )
- {
- diag_issue_diagnostic
- (d_supersede,
- _sar_source_pos2(argument_entry),
- keytable_entry->at_name,
- diag_tag_text(argument_entry->header.b_tag),
- diag_tag_text(list_entry->header.b_type),
- diag_tag_text(list_entry->header.b_tag));
- }
- else
- {
- *seen_entry = argument_entry;
- }
-
- /*
- * Make sure that any enumeration value reference is valid.
- */
- sem_validate_argument_enumset (argument_entry,
- keytable_entry->b_subclass,
- argvalue_value_entry);
- }
-
-/*
-** Verify the value type for this argument, if it is a
-** built-in argument or a user_defined argument. Check for
-** proper enumeration set match
-*/
-if ( (argname_value_entry->obj_header.b_flags & sym_m_builtin) &&
- (argname_value_entry->obj_header.az_name == NULL) )
- {
- key_keytable_entry_type * keytable_entry;
-
- keytable_entry =
- (key_keytable_entry_type *) argname_value_entry->value.az_data;
- _assert (keytable_entry->b_class==tkn_k_class_argument,
- "name is not an argument");
- expected_type = argument_type_table[keytable_entry->b_subclass];
- }
-else
- expected_type = argname_value_entry->b_arg_type;
-
-/*
-** Argument value validation
-**
-** Acquire and evaluate argument value.
-** Allow a widget reference as the value of an argument. NOTE: gadgets
-** are not allowed as argument values, only controls.
-**
-** This entry may be absent due to extensive compilation errors.
-*/
-if ( argvalue_value_entry == NULL ) return;
-
-actual_tag = argvalue_value_entry->header.b_tag;
-switch ( actual_tag )
- {
- case sym_k_value_entry:
- actual_type = argvalue_value_entry->b_type;
- break;
- case sym_k_widget_entry:
- actual_type = sym_k_widget_ref_value;
- break;
- default:
- _assert (FALSE, "value entry missing");
- break;
- }
-valid_value = (actual_type == expected_type);
-
-/*
-** Coerce actual_type to expected_type for certain special cases.
-** We'll do this by creating a new value node for the coerced value with
-** the coerce unary operator set. We'll actually perform the coersion
-** operation here and set the flag indicating that expression evaluation
-** has already taken place.
-*/
-if ( expected_type == sym_k_any_value )
- valid_value = TRUE;
-if ( actual_type == sym_k_any_value )
- valid_value = TRUE;
-if ( actual_type == sym_k_identifier_value )
- valid_value = TRUE;
-if (( expected_type == sym_k_pixmap_value ) &&
- ( actual_type == sym_k_icon_value ))
- valid_value = TRUE;
-if (( expected_type == sym_k_pixmap_value ) &&
- ( actual_type == sym_k_xbitmapfile_value ))
- valid_value = TRUE;
-if (( expected_type == sym_k_color_value) && /* RAP rgb data type */
- ( actual_type == sym_k_rgb_value))
- valid_value = TRUE;
-/* BEGIN HaL fix CR 5429 */
-if (( expected_type == sym_k_class_rec_name_value) &&
- ( actual_type == sym_k_class_rec_name_value))
- valid_value = TRUE;
-/* END HaL fix CR 5429 */
-/* For boolean values converted to enums */
-if ((expected_type == sym_k_integer_value) &&
- (actual_type == sym_k_bool_value))
- valid_value = TRUE;
-if (( expected_type == sym_k_char_8_value ) &&
- ( actual_type == sym_k_localized_string_value ))
- valid_value = TRUE;
-if (( expected_type == sym_k_compound_string_value ) &&
- ( actual_type == sym_k_char_8_value ))
- {
- valid_value = TRUE;
- if ( (argvalue_value_entry->obj_header.b_flags & sym_m_private) != 0)
- {
- sym_value_entry_type *cstr_value;
-
- cstr_value = (sym_value_entry_type *) sem_create_cstr();
- cstr_value->b_expr_opr = sym_k_coerce_op;
- cstr_value->az_exp_op1 = argvalue_value_entry;
- sem_evaluate_value_expr (cstr_value);
- argument_entry->az_arg_value = cstr_value;
- }
- }
-if (( expected_type == sym_k_compound_string_value ) &&
- ( actual_type == sym_k_localized_string_value ))
- {
- valid_value = TRUE;
- if ( (argvalue_value_entry->obj_header.b_flags & sym_m_private) != 0)
- {
- sym_value_entry_type *cstr_value;
-
- cstr_value = (sym_value_entry_type *) sem_create_cstr();
- cstr_value->b_expr_opr = sym_k_coerce_op;
- cstr_value->az_exp_op1 = argvalue_value_entry;
- sem_evaluate_value_expr (cstr_value);
- argument_entry->az_arg_value = cstr_value;
- }
- }
-if (( expected_type == sym_k_wchar_string_value ) &&
- ( actual_type == sym_k_localized_string_value ))
- {
- valid_value = TRUE;
- if ( (argvalue_value_entry->obj_header.b_flags & sym_m_private) != 0)
- {
- sym_value_entry_type *wcstr_value;
-
- wcstr_value = (sym_value_entry_type *) sem_create_wchar_str();
- wcstr_value->b_expr_opr = sym_k_coerce_op;
- wcstr_value->az_exp_op1 = argvalue_value_entry;
- sem_evaluate_value_expr (wcstr_value);
- argument_entry->az_arg_value = wcstr_value;
- }
- }
-if (( expected_type == sym_k_font_table_value ) &&
- (( actual_type == sym_k_font_value ) ||
- ( actual_type == sym_k_fontset_value )))
- {
- valid_value = TRUE;
- if ( (argvalue_value_entry->obj_header.b_flags & sym_m_private) != 0)
- {
- sym_value_entry_type *font_table;
-
- font_table =
- sem_create_value_entry
- ((char*)&argvalue_value_entry, sizeof(long),
- sym_k_font_table_value);
- font_table->b_table_count = 1;
- font_table->az_first_table_value = argvalue_value_entry;
- font_table->b_expr_opr = sym_k_coerce_op;
- font_table->az_exp_op1 = argvalue_value_entry;
- font_table->b_aux_flags |= sym_m_exp_eval;
- argument_entry->az_arg_value = sem_evaluate_value (font_table);
- }
- }
-if (( expected_type == sym_k_keysym_value ) &&
- ( actual_type == sym_k_integer_value ))
- {
-/*
- * If an integer is incountered when expecting a keysym then just make the
- * integer into a keysym if the integer is private. If it isn't give an error
- * message because Mrm won't be able to handle that problem.
- * When allocating the space for c_value the size of the string is one since an
- * integer can only be one character.
- */
- if ( (argvalue_value_entry->obj_header.b_flags & sym_m_private) != 0)
- {
- char tmp;
-
- valid_value = TRUE;
- tmp = argument_entry->az_arg_value->value.l_integer;
- argument_entry->az_arg_value->value.c_value = (char *) XtCalloc(1,2);
- /*
- * This is a very strange move. While we Calloc 2 bytes we only need to move
- * one of those bytes. We calloc 2 bytes for a null termination so HP type
- * machines will work. It looks wierd but it works.
- */
- _move (argument_entry->az_arg_value->value.c_value, &tmp, 1);
- argument_entry->az_arg_value->b_type = sym_k_keysym_value;
- argument_entry->az_arg_value->w_length = 1;
- }
- }
-
-if ((( expected_type == sym_k_horizontal_integer_value ) ||
- ( expected_type == sym_k_vertical_integer_value ))
- &&
- (( actual_type == sym_k_integer_value) ||
- ( actual_type == sym_k_float_value)))
- {
- /* If the expected type was either a horizontal or
- vertical integer and we got an integer, then simply make
- the actual type become the expected type. */
- valid_value = TRUE;
- argument_entry->az_arg_value->b_type = expected_type;
- /* If the actual_type is a float then coerce it into
- being an integer */
- if (actual_type == sym_k_float_value)
- argument_entry->az_arg_value->value.l_integer =
- (long) argument_entry->az_arg_value->value.d_real;
- /* XmPIXELS currently has a value of 0 so the following
- isn't really necessary but I suppose it is more robust. */
- if (argument_entry->az_arg_value->b_arg_type == 0)
- argument_entry->az_arg_value->b_arg_type = XmPIXELS;
- }
-
-if ((( expected_type == sym_k_horizontal_float_value ) ||
- ( expected_type == sym_k_vertical_float_value ))
- &&
- (( actual_type == sym_k_horizontal_integer_value ) ||
- ( actual_type == sym_k_vertical_integer_value )))
- {
- /* If the expected type was either a horizontal or
- vertical float and we got a horizontal or
- vertical integer, then make the actual type become
- a horizontal or vertical integer, respectively. */
- valid_value = TRUE;
- if (expected_type == sym_k_horizontal_float_value)
- argument_entry->az_arg_value->b_type =
- sym_k_horizontal_integer_value;
- else if (expected_type == sym_k_vertical_float_value)
- argument_entry->az_arg_value->b_type = sym_k_vertical_integer_value;
- /* Coerce the value into being a float */
- argument_entry->az_arg_value->value.d_real =
- (double) argument_entry->az_arg_value->value.l_integer;
- /* XmPIXELS currently has a value of 0 so the following
- isn't really necessary but I suppose it is more robust. */
- if (argument_entry->az_arg_value->b_arg_type == 0)
- argument_entry->az_arg_value->b_arg_type = XmPIXELS;
- }
-
-if ((( expected_type == sym_k_horizontal_integer_value ) ||
- ( expected_type == sym_k_vertical_integer_value ))
- &&
- (( actual_type == sym_k_horizontal_float_value ) ||
- ( actual_type == sym_k_vertical_float_value )))
- {
- /* If the expected type was either a horizontal or
- vertical integer and we got a horizontal or vertical
- float, then make the actual type become a horizontal
- or vertical float, respectively. */
- valid_value = TRUE;
- if (expected_type == sym_k_horizontal_integer_value)
- argument_entry->az_arg_value->b_type = sym_k_horizontal_float_value;
- else if (expected_type == sym_k_vertical_integer_value)
- argument_entry->az_arg_value->b_type = sym_k_vertical_float_value;
- /* Coerce the value into being an integer */
- argument_entry->az_arg_value->value.l_integer =
- (long) argument_entry->az_arg_value->value.d_real;
- /* XmPIXELS currently has a value of 0 so the following
- isn't really necessary but I suppose it is more robust. */
- if (argument_entry->az_arg_value->b_arg_type == 0)
- argument_entry->az_arg_value->b_arg_type = XmPIXELS;
- }
-
-if ((( expected_type == sym_k_horizontal_float_value ) ||
- ( expected_type == sym_k_vertical_float_value ))
- &&
- (( actual_type == sym_k_integer_value) ||
- ( actual_type == sym_k_float_value)))
- {
- /* If the expected type was either a horizontal or
- vertical float and we got a float, then simply make
- the actual type become the expected type. */
- valid_value = TRUE;
- argument_entry->az_arg_value->b_type = expected_type;
- /* If actual_type is an integer, then coerce into being
- a float */
- if (actual_type == sym_k_integer_value)
- argument_entry->az_arg_value->value.d_real =
- (double) argument_entry->az_arg_value->value.l_integer;
- /* XmPIXELS currently has a value of 0 so the following
- isn't really necessary but I suppose it is more robust. */
- if (argument_entry->az_arg_value->b_arg_type == 0)
- argument_entry->az_arg_value->b_arg_type = XmPIXELS;
- }
-
-/* It is also possible for us to encounter a horizontal float or
- int when we are expecting a vertical float or int. When using
- 'value' defined constants, we coerce the type of the constant
- the first time it is used. We have to be able to accept the
- coerced value in a different context later. */
-if ((( expected_type == sym_k_horizontal_float_value ) &&
- ( actual_type == sym_k_vertical_float_value ))
- ||
- (( expected_type == sym_k_horizontal_integer_value ) &&
- ( actual_type == sym_k_vertical_integer_value )))
-{
- /* Leave the actual type and value alone, but flag it as
- an acceptable value. This will mean that the first orientation
- the value is coerced to will be the orientation for all
- occurences of the value. */
- valid_value = TRUE;
-}
-
-if (!valid_value)
- diag_issue_diagnostic
- (d_obj_type,
- _sar_source_pos2(argname_value_entry),
- diag_value_text(actual_type),
- diag_tag_text(actual_tag),
- diag_value_text(expected_type),
- diag_tag_text(sym_k_value_entry) );
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine performs enumeration set validation for a single
-** argument entry. If it's value is an enumeration set reference,
-** then we verify that the value comes from the argument's supported
-** enumeration set.
-**
-** FORMAL PARAMETERS:
-**
-** argument_entry the current argument entry
-** arg_code the sym_k_..._arg code for the argument
-** arg_value_entry the value node for the argument value
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error reporting
-**
-**--
-**/
-
-void sem_validate_argument_enumset
- (argument_entry, arg_code, arg_value_entry)
- sym_argument_entry_type *argument_entry;
- int arg_code;
- sym_value_entry_type *arg_value_entry;
-
-{
-
-/*
- * Local variables
- */
-unsigned short int enumval_code;
-unsigned short int enumset_code;
-int ndx;
-
-
-/*
- * No action if value is not an integer enumeration value. Else:
- * - argument must support enumeration set
- * - value must be from set
- */
-if ( arg_value_entry == NULL ) return;
-if ((arg_value_entry->b_type != sym_k_integer_value) &&
- (arg_value_entry->b_type != sym_k_bool_value)) return;
-enumval_code = arg_value_entry->b_enumeration_value_code;
-if ( enumval_code == 0 ) return;
-enumset_code = argument_enumset_table[arg_code];
-if ( enumset_code == 0 )
- {
- if (arg_value_entry->b_type != sym_k_bool_value)
- diag_issue_diagnostic(d_no_enumset,
- _sar_source_pos2(argument_entry),
- uil_argument_names[arg_code]);
- return;
- }
-for ( ndx=0 ; ndx<enum_set_table[enumset_code].values_cnt ; ndx++ )
- if ( enum_set_table[enumset_code].values[ndx] == enumval_code ) return;
-diag_issue_diagnostic (d_invalid_enumval,
- _sar_source_pos2(argument_entry),
- uil_argument_names[arg_code],
- uil_enumval_names[enumval_code]);
-return;
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine validates a constraint entry. It checks to make
-** sure that the constraint reference is valid in each of the
-** parents of the widget using the constraint
-**
-** FORMAL PARAMETERS:
-**
-** widget_node the widget using the constraint
-** argument_entry the constraint argument
-**
-** IMPLICIT INPUTS:
-**
-** >
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error reporting
-**
-**--
-**/
-
-void sem_validate_constraint_entry (widget_node, argument_entry, widget_type)
- sym_widget_entry_type *widget_node;
- sym_argument_entry_type *argument_entry;
- unsigned int widget_type;
-{
-
-/*
- * Local variables
- */
-sym_parent_list_type *parent_entry;
-sym_widget_entry_type *parent_object;
-unsigned int parent_type;
-unsigned int parent_tag;
-key_keytable_entry_type *keytable_entry;
-sym_value_entry_type *arg_name_entry;
-boolean supported_flag;
-
-
-/*
- * Validate the constraint with each of the referencing widget's parents
- */
-for (parent_entry=widget_node->parent_list;
- parent_entry!=NULL;
- parent_entry=parent_entry->next)
- {
-
- /*
- * Acquire the parent object and its type
- */
- parent_object = parent_entry->parent;
- parent_type = parent_object->header.b_type;
- if ( parent_object->obj_header.b_flags & sym_m_obj_is_gadget )
- {
- parent_tag = sym_k_gadget_entry;
- }
- else
- {
- parent_tag = sym_k_widget_entry;
- }
-
- /*
- * Acquire the appropriate pointers, and validate the reference
- */
- arg_name_entry = (sym_value_entry_type *)argument_entry->az_arg_name;
- keytable_entry = (key_keytable_entry_type *)arg_name_entry->value.az_data;
- supported_flag = sem_argument_allowed(keytable_entry->b_subclass,
- parent_type);
- if (!supported_flag)
- {
- /* Check for both argument and constraint, e.g. decimalPoints. */
- supported_flag = sem_argument_allowed(keytable_entry->b_subclass,
- widget_type);
- if (!supported_flag)
- diag_issue_diagnostic(d_unsupp_const,
- _sar_source_pos2(argument_entry),
- keytable_entry->at_name,
- diag_object_text(parent_type),
- diag_tag_text(parent_tag));
- }
- }
-
-/*
- * Checks on nodes pointed to by this node
- *
- * There is no need to validate the value if it is a widget since widgets are
- * validated elsewhere and you can't define widgets in an argument list anyway.
- */
-
-if ((argument_entry->az_arg_value->header.b_tag != sym_k_widget_entry) &&
- (argument_entry->az_arg_value->header.b_tag != sym_k_gadget_entry))
- sem_validate_node (( sym_entry_type *)argument_entry->az_arg_value);
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine validates all the callbacks in an callback list.
-** It recurse down nested lists.
-**
-** FORMAL PARAMETERS:
-**
-** widget_node the current widget
-** widget_type the current widget's type
-** list_entry list to be validated
-** seen flag table to detect duplicate callbacks
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void sem_validate_callback_list (widget_node, widget_type, list_entry, seen)
- sym_widget_entry_type *widget_node;
- unsigned int widget_type;
- sym_list_entry_type *list_entry;
- sym_callback_entry_type **seen;
-
-{
-
-/*
- * Local variables
- */
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-sym_callback_entry_type *callback_entry;
-
-
-/*
- * loop down the list
- */
-if ( list_entry == NULL ) return;
-for (list_member=(sym_obj_entry_type *)list_entry->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry = (sym_nested_list_entry_type *) list_member;
- sem_validate_callback_list (widget_node, widget_type,
- nested_list_entry->az_list, seen);
- break;
- case sym_k_callback_entry:
- callback_entry = (sym_callback_entry_type *) list_member;
- sem_validate_callback_entry (widget_node, widget_type,
- list_entry, callback_entry, seen);
- break;
- default:
- diag_issue_diagnostic
- ( d_list_item,
- _sar_source_pos2 ( list_entry ),
- diag_tag_text (sym_k_callback_entry),
- diag_tag_text (list_entry->header.b_type),
- diag_tag_text (list_entry->header.b_tag) );
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine performs validation for a single callback entry
-** for the current widget node.
-**
-** FORMAL PARAMETERS:
-**
-** widget_node the current widget
-** widget_type the current widget's type
-** list_entry list entry for current callback entry
-** callback_entry the current callback entry
-** seen flag table to detect duplicate callbacks
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error reporting
-**
-**--
-**/
-
-void sem_validate_callback_entry
- (widget_node, widget_type, list_entry, callback_entry, seen)
- sym_widget_entry_type *widget_node;
- unsigned int widget_type;
- sym_list_entry_type *list_entry;
- sym_callback_entry_type *callback_entry;
- sym_callback_entry_type **seen;
-
-{
-
-/*
- * Local variables
- */
-sym_value_entry_type *reason_value_entry;
-key_keytable_entry_type *keytable_entry;
-sym_callback_entry_type **seen_entry;
-boolean supported_flag;
-static sym_value_entry_type *widget_az_arg_value = NULL;
-
-
-/*
- * ignore error entries, consistency check
- */
-if ( callback_entry->header.b_tag == sym_k_error_entry ) return;
-_assert (callback_entry->header.b_tag==sym_k_callback_entry,
- "unexpected non callback entry");
-
-reason_value_entry = (sym_value_entry_type *)
- callback_entry->az_call_reason_name;
-
-/*
- * Force expression evaluation
- */
-sem_evaluate_value_expr (reason_value_entry);
-
-if (reason_value_entry == NULL)
- return;
-
-_assert (reason_value_entry->header.b_tag == sym_k_value_entry,
- "reason value entry missing");
-
-if (reason_value_entry->b_type != sym_k_reason_value) {
- diag_issue_diagnostic
- ( d_list_item,
- _sar_source_pos2 ( reason_value_entry ),
- diag_value_text (reason_value_entry->b_type),
- diag_tag_text (list_entry->header.b_type),
- diag_tag_text (list_entry->header.b_tag) );
- return;
- }
-
-/*
- * Check for unsupported callbacks.
- * This check is required for known toolkit callbacks in
- * toolkit widgets.
- */
-if ( (reason_value_entry->obj_header.b_flags&sym_m_builtin) &&
- (widget_type!=uil_sym_user_defined_object) )
- {
- /*
- * Pick up the token keytable entry for the callback.
- * Validate that the reason is supported
- */
- keytable_entry = (key_keytable_entry_type *)
- reason_value_entry->value.az_data;
- _assert (keytable_entry->b_class==tkn_k_class_reason,
- "unexpected non-reason keytable entry");
- supported_flag = sem_reason_allowed
- (keytable_entry->b_subclass, widget_type);
- if ( ! supported_flag )
- diag_issue_diagnostic
- (d_unsupported,
- _sar_source_pos2(callback_entry),
- keytable_entry->at_name,
- diag_tag_text(callback_entry->header.b_tag),
- diag_object_text(widget_type));
-
- /*
- * Check for duplicate callbacks. A warning is issued, but the
- * callback is not removed from the list, since it may occur in
- * an callback list - and the callback list may be referenced in
- * another context where this callback is not duplicated.
- */
- seen_entry = (sym_callback_entry_type **)
- &seen[keytable_entry->b_subclass];
- if ( *seen_entry != NULL )
- {
- diag_issue_diagnostic
- (d_supersede,
- _sar_source_pos2(callback_entry),
- keytable_entry->at_name,
- diag_tag_text(callback_entry->header.b_tag),
- diag_tag_text(list_entry->header.b_type),
- diag_tag_text(list_entry->header.b_tag));
- }
- else
- {
- *seen_entry = callback_entry;
- }
- }
-
-/*
- * Checks on nodes pointed to by this node
- */
- /* Begin fixing DTS 10391 and OSF CR 8715*/
- if(callback_entry->az_call_proc_ref &&
- callback_entry->az_call_proc_ref->az_arg_value &&
- (callback_entry->az_call_proc_ref->az_arg_value->header.b_tag
- == sym_k_widget_entry ||
- callback_entry->az_call_proc_ref->az_arg_value->header.b_tag
- == sym_k_gadget_entry) &&
- widget_az_arg_value == callback_entry->az_call_proc_ref->az_arg_value){
- diag_issue_diagnostic
- (d_circular_def,
- _sar_source_pos2(callback_entry),
- "callback client_data");
- }else{
- if(callback_entry->az_call_proc_ref &&
- callback_entry->az_call_proc_ref->az_arg_value &&
- (callback_entry->az_call_proc_ref->az_arg_value->header.b_tag
- == sym_k_widget_entry ||
- callback_entry->az_call_proc_ref->az_arg_value->header.b_tag
- == sym_k_gadget_entry) && !widget_az_arg_value)
- widget_az_arg_value = callback_entry->az_call_proc_ref->az_arg_value;
- sem_validate_procref_entry (callback_entry->az_call_proc_ref);
- sem_validate_procref_list (callback_entry->az_call_proc_ref_list);
- }
- widget_az_arg_value = NULL;
- /* End fixing DTS 10391 and OSF CR 8715*/
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine validates all the controls in an control list.
-** It recurse down nested lists.
-**
-** FORMAL PARAMETERS:
-**
-** widget_node the current widget
-** widget_type the current widget's type
-** list_entry list to be validated
-** count to return gadget count
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void sem_validate_control_list (widget_node, widget_type, list_entry, count)
- sym_widget_entry_type *widget_node;
- unsigned int widget_type;
- sym_list_entry_type *list_entry;
- int *count;
-
-{
-
-/*
- * Local variables
- */
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-sym_control_entry_type *control_entry;
-
-
-/*
- * loop down the list
- */
-if ( list_entry == NULL ) return;
-for (list_member=(sym_obj_entry_type *)list_entry->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry = (sym_nested_list_entry_type *) list_member;
- sem_validate_control_list
- (widget_node, widget_type, nested_list_entry->az_list, count);
- break;
- case sym_k_control_entry:
- control_entry = (sym_control_entry_type *) list_member;
- sem_validate_control_entry
- (widget_node, widget_type, list_entry, control_entry, count);
- break;
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine performs validation for a single control entry
-** for the current widget node.
-**
-** FORMAL PARAMETERS:
-**
-** widget_node the current widget
-** widget_type the current widget's type
-** list_entry list entry for current control entry
-** control_entry the current control entry
-** gadget_count to accumulate count of controlled gadgets
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error reporting
-**
-**--
-**/
-
-void sem_validate_control_entry
- (widget_node, widget_type, list_entry, control_entry, gadget_count)
- sym_widget_entry_type *widget_node;
- unsigned int widget_type;
- sym_list_entry_type *list_entry;
- sym_control_entry_type *control_entry;
- int *gadget_count;
-
-{
-
-/*
- * Local variables
- */
-sym_widget_entry_type *control_obj_entry;
-boolean supported_flag;
-
-
-/*
- * ignore error entries, consistency check
- */
-if ( control_entry->header.b_tag == sym_k_error_entry ) return;
-_assert (control_entry->header.b_tag==sym_k_control_entry,
- "unexpected non control entry");
-
-/*
- * Similar checks for the object being controlled
- */
-control_obj_entry = (sym_widget_entry_type *) control_entry->az_con_obj;
-if ( control_obj_entry->header.b_tag == sym_k_error_entry )
- {
- control_entry->header.b_tag = sym_k_error_entry;
- return;
- }
-_assert (control_obj_entry->header.b_tag==sym_k_widget_entry ||
- control_obj_entry->header.b_tag==sym_k_gadget_entry ||
- control_obj_entry->header.b_tag==sym_k_child_entry,
- "unexpected non-control object entry");
-
-if ( control_obj_entry->header.b_tag == sym_k_gadget_entry )
- *gadget_count += 1;
-
-/*
- * Check for unsupported controls or automatic children.
- */
-if (control_obj_entry->header.b_tag == sym_k_child_entry)
- {
- supported_flag =
- sem_child_allowed(control_obj_entry->header.b_type, widget_type);
- if ( ! supported_flag )
- diag_issue_diagnostic
- (d_unsupported,
- _sar_source_pos2(control_entry),
- uil_child_names[control_obj_entry->header.b_type],
- "automatic child",
- diag_object_text(widget_type));
- }
-else
- {
- supported_flag =
- sem_control_allowed(control_obj_entry->header.b_type, widget_type);
- if ( ! supported_flag )
- diag_issue_diagnostic
- (d_unsupported,
- _sar_source_pos2(control_entry),
- diag_object_text(control_obj_entry->header.b_type),
- diag_tag_text(control_entry->header.b_tag),
- diag_object_text(widget_type));
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine recursively checks for cycles in a widget hierarchy.
-** A cycle is defined as the appearance of a widget's name in its
-** subtree hierarchy. A cycle is detected by setting a unique id
-** for this cycle check in each name entry encountered. If this id
-** is ever encountered again, there is a cycle.
-**
-** This is the root routine of the recursion, which is responsible
-** for setting flags in the name entry.
-**
-** FORMAL PARAMETERS:
-**
-** list_entry list to be validated
-** cycle_name if non-NULL, a widget name for cycle check
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void sem_validate_widget_cycle (list_entry, cycle_name)
- sym_list_entry_type *list_entry;
- sym_name_entry_type *cycle_name;
-
-{
-
-/*
- * Local variables
- */
-boolean cycle_res;
-
-
-/*
- * Acquire a new cycle id value.Call the auxiliary recursion routine,
- * and set results in the name entry.
- */
-if ( cycle_name == NULL ) return;
-cycle_id += 1;
-cycle_name->az_cycle_id = cycle_id;
-cycle_res = sem_validate_widget_cycle_aux (list_entry, cycle_name);
-cycle_name->b_flags |= sym_m_cycle_checked;
-if ( cycle_res )
- cycle_name->b_flags |= sym_m_has_cycle;
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine recursively checks for cycles in a widget hierarchy.
-** A cycle is defined as the appearance of a widget's name in its
-** subtree hierarchy. This is the fully recursive auxiliary for
-** sem_validate_widget_cycle
-**
-** Checking is based on the fact that for any named widget, its
-** subtree definition is fixed and can be checked exactly once. Once
-** checked, it is marked as checked, and also flagged if it contains
-** a cycle. Since any tree containing a subtree which has a cycle also
-** has a cycle, checking stops immediately if such a subtree is detected,
-** and subtrees must always be (recursively) checked in advance of
-** the current check.
-**
-** FORMAL PARAMETERS:
-**
-** list_entry list to be validated
-** cycle_name if non-NULL, a widget name for cycle check
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-** TRUE cycle detected
-** FALSE no cycle detected
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-boolean sem_validate_widget_cycle_aux (list_entry, cycle_name)
- sym_list_entry_type *list_entry;
- sym_name_entry_type *cycle_name;
-
-{
-
-/*
- * Local variables
- */
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-sym_control_entry_type *control_entry;
-sym_widget_entry_type *control_obj_entry;
-sym_name_entry_type *control_obj_name;
-
-
-/*
- * loop down the list. Check for cycles in each leaf (widget) node. Note
- * we must step through the az_reference for named widgets. If a cycle is
- * ever detected, we exit (or we'll recurse forever). Note that an error
- * node returns TRUE, as if it had a cycle (which inhibits further checking).
- *
- * If we encounter a previously visited node, we may have either a cycle
- * or a legitimate multiple reference. Verify that it is a cycle, and
- * issue an error message if so. If it is not verified, it need not be
- * checked again.
- */
-if ( list_entry == NULL ) return FALSE;
-if ( cycle_name == NULL ) return FALSE;
-if ( cycle_name->b_flags & sym_m_cycle_checked )
- return (cycle_name->b_flags&sym_m_has_cycle) == 1;
-
-for (list_member=(sym_obj_entry_type *)list_entry->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry = (sym_nested_list_entry_type *) list_member;
- if ( sem_validate_widget_cycle_aux
- (nested_list_entry->az_list, cycle_name) )
- return TRUE;
- break;
- case sym_k_control_entry:
- control_entry = (sym_control_entry_type *) list_member;
- control_obj_entry =
- (sym_widget_entry_type *) control_entry->az_con_obj;
- if ( control_obj_entry->header.b_tag == sym_k_error_entry )
- return TRUE;
- _assert (control_obj_entry->header.b_tag==sym_k_widget_entry ||
- control_obj_entry->header.b_tag==sym_k_gadget_entry ||
- control_obj_entry->header.b_tag==sym_k_child_entry,
- "unexpected non-control object entry");
- if ( control_obj_entry->obj_header.az_reference != NULL )
- control_obj_entry = (sym_widget_entry_type *)
- control_obj_entry->obj_header.az_reference;
- if ( control_obj_entry->az_controls == NULL )
- break;
- control_obj_name = control_obj_entry->obj_header.az_name;
- if ( control_obj_name != NULL )
- {
- if ( control_obj_name->az_cycle_id == cycle_id )
- {
- if ( sem_validate_verify_cycle
- (control_obj_entry,
- control_obj_entry->az_controls) )
- {
- diag_issue_diagnostic
- (d_widget_cycle,
- _sar_source_pos2(control_entry),
- control_obj_name->c_text);
- control_obj_name->b_flags |= sym_m_cycle_checked;
- control_obj_name->b_flags |= sym_m_has_cycle;
- return TRUE;
- }
- else
- {
- control_obj_name->b_flags |= sym_m_cycle_checked;
- break;
- }
- }
- control_obj_name->az_cycle_id = cycle_id;
- }
- if ( sem_validate_widget_cycle_aux
- (control_obj_entry->az_controls, cycle_name) )
- return TRUE;
- break;
- }
-return FALSE;
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine verifies that a cycle found by widget_cycle_aux is
-** really a cycle. widget_cycle_aux may have detected a legitimate
-** multiple appearance of a widget in a hierarchy which is not a cycle.
-** This routine uses a pointer-marching technique to see if the given
-** node is in a real cycle. If the cycle_obj is ever encountered in
-** the pointer march, then there is a cycle. Otherwise, the march
-** terminates.
-**
-**
-** FORMAL PARAMETERS:
-**
-** cycle_obj object to be found in cycle
-** list_entry current controls list
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-** TRUE cycle detected
-** FALSE no cycle detected
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-boolean sem_validate_verify_cycle (cycle_obj, list_entry)
- sym_widget_entry_type *cycle_obj;
- sym_list_entry_type *list_entry;
-
-{
-
-/*
- * Local variables
- */
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-sym_control_entry_type *control_entry;
-sym_widget_entry_type *control_obj_entry;
-
-
-/*
- * Search all objects in the controls list, and recurse.
- * objects controlled by the current object.
- */
-if ( list_entry == NULL )
- return FALSE;
-for (list_member=(sym_obj_entry_type *)list_entry->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry = (sym_nested_list_entry_type *) list_member;
- if ( sem_validate_verify_cycle
- (cycle_obj, nested_list_entry->az_list) )
- return TRUE;
- break;
- case sym_k_control_entry:
- control_entry = (sym_control_entry_type *) list_member;
- control_obj_entry =
- (sym_widget_entry_type *) control_entry->az_con_obj;
- if ( control_obj_entry->obj_header.az_reference != NULL )
- control_obj_entry = (sym_widget_entry_type *)
- control_obj_entry->obj_header.az_reference;
- if ( control_obj_entry == cycle_obj )
- return TRUE;
- if ( control_obj_entry->az_controls == NULL )
- break;
- if ( sem_validate_verify_cycle
- (cycle_obj, control_obj_entry->az_controls) )
- return TRUE;
- break;
- }
-return FALSE;
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine validates all the procrefs in an procref list.
-** It recurses down nested lists.
-**
-** FORMAL PARAMETERS:
-**
-** list_entry list to be validated
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-void sem_validate_procref_list (list_entry)
- sym_list_entry_type *list_entry;
-
-{
-
-/*
- * Local variables
- */
-sym_obj_entry_type *list_member;
-sym_nested_list_entry_type *nested_list_entry;
-sym_proc_ref_entry_type *procref_entry;
-
-
-/*
- * loop down the list
- */
-if ( list_entry == NULL ) return;
-for (list_member=(sym_obj_entry_type *)list_entry->obj_header.az_next;
- list_member!=NULL;
- list_member=(sym_obj_entry_type *)list_member->obj_header.az_next)
- switch ( list_member->header.b_tag )
- {
- case sym_k_nested_list_entry:
- nested_list_entry = (sym_nested_list_entry_type *) list_member;
- sem_validate_procref_list (nested_list_entry->az_list);
- break;
- case sym_k_proc_ref_entry:
- procref_entry = (sym_proc_ref_entry_type *) list_member;
- sem_validate_procref_entry (procref_entry);
- break;
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine performs validation for a single procref entry.
-**
-** FORMAL PARAMETERS:
-**
-** procref_entry the current procref entry
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error reporting
-**
-**--
-**/
-
-void sem_validate_procref_entry (procref_entry)
- sym_proc_ref_entry_type *procref_entry;
-
-{
-
-/*
- * Local variables
- */
-sym_value_entry_type *value_entry;
-sym_proc_def_entry_type *proc_def_entry;
-int actual_arg_count;
-int expected_arg_type;
-int actual_arg_type;
-int arg_checking;
-
-
-/*
- * ignore error entries, consistency check
- */
-if ( procref_entry == NULL ) return;
-if ( procref_entry->header.b_tag == sym_k_error_entry ) return;
-_assert (procref_entry->header.b_tag==sym_k_proc_ref_entry,
- "unexpected non procref entry");
-
-
- /*
- ** Validate procedure reference argument:
- ** Correct number of args
- ** Correct datatype of arg - coerce if necessary
- */
-
- proc_def_entry = procref_entry->az_proc_def;
- /* Could be NULL due to previous compilation errors. */
- if (proc_def_entry == NULL) return;
-
- /*
- ** if checking is required, check that the values
- ** agree with the parameters
- */
-
- arg_checking = proc_def_entry->v_arg_checking;
-
- value_entry = procref_entry->az_arg_value;
-
- if (arg_checking)
- {
- boolean valid_arg;
-
- if (value_entry == NULL)
- {
- actual_arg_count = 0;
- actual_arg_type = sym_k_no_value;
- }
- else
- {
- sem_evaluate_value_expr(value_entry);
- actual_arg_count = 1;
- actual_arg_type = value_entry->b_type;
- }
-
- if (actual_arg_count != proc_def_entry->b_arg_count)
- {
- diag_issue_diagnostic
- ( d_arg_count,
- _sar_source_pos2 (procref_entry),
- proc_def_entry->obj_header.az_name->c_text,
- proc_def_entry->b_arg_count );
-
- return;
- }
-
- expected_arg_type = proc_def_entry->b_arg_type;
- valid_arg = (actual_arg_type == expected_arg_type);
-
- if ( expected_arg_type == sym_k_any_value )
- valid_arg = TRUE;
-
- if ( actual_arg_type == sym_k_identifier_value )
- valid_arg = TRUE;
-
- if (( expected_arg_type == sym_k_pixmap_value ) &&
- ( actual_arg_type == sym_k_icon_value ))
- valid_arg = TRUE;
-
- if (( expected_arg_type == sym_k_color_value) &&/* RAP rgb data type */
- ( actual_arg_type == sym_k_rgb_value))
- valid_arg = TRUE;
-
- if ((expected_arg_type == sym_k_char_8_value) &&
- (actual_arg_type == sym_k_localized_string_value))
- valid_arg = TRUE;
-
- if (( expected_arg_type == sym_k_compound_string_value ) &&
- ( actual_arg_type == sym_k_char_8_value ))
- {
- valid_arg = TRUE;
- if ( (value_entry->obj_header.b_flags & sym_m_private) != 0)
- {
- sym_value_entry_type *cstr_value;
-
- cstr_value = (sym_value_entry_type *) sem_create_cstr();
- cstr_value->b_expr_opr = sym_k_coerce_op;
- cstr_value->az_exp_op1 = value_entry;
- sem_evaluate_value_expr (cstr_value);
- }
- }
-
- if (( expected_arg_type == sym_k_compound_string_value ) &&
- ( actual_arg_type == sym_k_localized_string_value ))
- {
- valid_arg = TRUE;
- if ( (value_entry->obj_header.b_flags & sym_m_private) != 0)
- {
- sym_value_entry_type *cstr_value;
-
- cstr_value = (sym_value_entry_type *) sem_create_cstr();
- cstr_value->b_expr_opr = sym_k_coerce_op;
- cstr_value->az_exp_op1 = value_entry;
- sem_evaluate_value_expr (cstr_value);
- }
- }
-
- if (( expected_arg_type == sym_k_wchar_string_value ) &&
- ( actual_arg_type == sym_k_localized_string_value ))
- {
- valid_arg = TRUE;
- if ( (value_entry->obj_header.b_flags & sym_m_private) != 0)
- {
- sym_value_entry_type *wcstr_value;
-
- wcstr_value = (sym_value_entry_type *) sem_create_wchar_str();
- wcstr_value->b_expr_opr = sym_k_coerce_op;
- wcstr_value->az_exp_op1 = value_entry;
- sem_evaluate_value_expr (wcstr_value);
- }
- }
-
- if (( expected_arg_type == sym_k_font_table_value ) &&
- (( actual_arg_type == sym_k_font_value ) ||
- ( actual_arg_type == sym_k_fontset_value )))
- {
- valid_arg = TRUE;
- if ( (value_entry->obj_header.b_flags & sym_m_private) != 0)
- {
- sym_value_entry_type *font_table;
-
- font_table =
- sem_create_value_entry
- ( (char*)&value_entry, sizeof(long),
- sym_k_font_table_value );
- font_table->b_expr_opr = sym_k_coerce_op;
- font_table->az_exp_op1 = value_entry;
- value_entry = sem_evaluate_value (font_table);
- }
- }
-
- if ((expected_arg_type == sym_k_widget_ref_value) &&
- (value_entry->header.b_tag == sym_k_widget_entry))
- {
- expected_arg_type = proc_def_entry->b_widget_type;
- actual_arg_type = value_entry->header.b_type;
-
- if ((expected_arg_type > uil_max_object) ||
- (actual_arg_type == expected_arg_type))
- {
- valid_arg = TRUE;
- }
- else
- {
- diag_issue_diagnostic
- (d_arg_type,
- _sar_source_pos2(procref_entry),
- diag_object_text(actual_arg_type),
- proc_def_entry->obj_header.az_name->c_text,
- diag_object_text(expected_arg_type));
-
- return;
- }
- }
-
- if (!valid_arg)
- {
- diag_issue_diagnostic
- ( d_arg_type,
- _sar_source_pos2 (procref_entry),
- diag_value_text( actual_arg_type ),
- proc_def_entry->obj_header.az_name->c_text,
- diag_value_text( expected_arg_type ) );
-
- return;
- }
- }
-
-/*
- * Perform validation of tags
- */
-sem_validate_node (( sym_entry_type *)procref_entry->az_arg_value);
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This predicate specifies if an argument is allowed in a class.
-**
-** FORMAL PARAMETERS:
-**
-** arg_code The sym_k_..._arg code for the argument
-** class_code The sym_k_..._object code for the class
-**
-** IMPLICIT INPUTS:
-**
-** allowed_argument_table
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** TRUE argument is allowed
-** FALSE argument is not allowed
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-boolean sem_argument_allowed (arg_code, class_code)
- unsigned int arg_code;
- unsigned int class_code;
-
-{
-
-unsigned char *entry_vec;
-unsigned char vec_byte;
-
-entry_vec = allowed_argument_table[arg_code];
-vec_byte = entry_vec[_BIT_INDEX(class_code)];
-return (boolean) vec_byte & _BIT_MASK(class_code);
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This predicate specifies if a reason is allowed in a class.
-**
-** FORMAL PARAMETERS:
-**
-** rsn_code The sym_k_..._reason code for the reason
-** class_code The sym_k_..._object code for the class
-**
-** IMPLICIT INPUTS:
-**
-** allowed_reason_table
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** TRUE reason is allowed
-** FALSE reason is not allowed
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-boolean sem_reason_allowed (rsn_code, class_code)
- unsigned int rsn_code;
- unsigned int class_code;
-
-{
-
-unsigned char *entry_vec;
-unsigned char vec_byte;
-
-entry_vec = allowed_reason_table[rsn_code];
-vec_byte = entry_vec[_BIT_INDEX(class_code)];
-return (boolean) vec_byte & _BIT_MASK(class_code);
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This predicate specifies if a control is allowed in a class.
-**
-** FORMAL PARAMETERS:
-**
-** ctl_code The sym_k_..._object code for the control, that is,
-** the class of object which is to be a child of
-** the class below.
-** class_code The sym_k_..._object code for the class
-**
-** IMPLICIT INPUTS:
-**
-** allowed_control_table
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** TRUE control is allowed
-** FALSE control is not allowed
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-boolean sem_control_allowed (ctl_code, class_code)
- unsigned int ctl_code;
- unsigned int class_code;
-
-{
-
-unsigned char *entry_vec;
-unsigned char vec_byte;
-
-entry_vec = allowed_control_table[ctl_code];
-vec_byte = entry_vec[_BIT_INDEX(class_code)];
-return (boolean) vec_byte & _BIT_MASK(class_code);
-
-}
-
-\f
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This predicate specifies if an automatically create child is
-** allowed in a class.
-**
-** FORMAL PARAMETERS:
-**
-** ctl_code The sym_k_..._child code for the child, that is,
-** the class of child which is to be automatically
-** created in the class below.
-** class_code The sym_k_..._object code for the class
-**
-** IMPLICIT INPUTS:
-**
-** allowed_child_table
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** TRUE child is allowed
-** FALSE child is not allowed
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-boolean sem_child_allowed (ctl_code, class_code)
- unsigned int ctl_code;
- unsigned int class_code;
-
-{
-
-unsigned char *entry_vec;
-unsigned char vec_byte;
-
-entry_vec = allowed_child_table[ctl_code];
-vec_byte = entry_vec[_BIT_INDEX(class_code)];
-return (boolean) vec_byte & _BIT_MASK(class_code);
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function does evaluation and validation of value nodes. It
-** guarantees that a value usable by the output routine or other consumers
-** of values is available in the value union of the node, with
-** any other corollary fields also set. The result of the operation may
-** be a new node, if coercion is required.
-**
-** FORMAL PARAMETERS:
-**
-** val_entry pointer to the value node to be evaluated
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** The value node which results from the evaluation/validation operation
-**
-** SIDE EFFECTS:
-**
-** The value union and other fields may be modified.
-**
-**--
-**/
-
-sym_value_entry_type *sem_evaluate_value (val_entry)
- sym_value_entry_type *val_entry;
-
-{
-/*
- * Force expression evaluation
- */
-sem_evaluate_value_expr (val_entry);
-
-/* BEGIN HAL Fix CR 4774 */
-/* Do not execute case statement if val_entry was previously
- * a sym_k_valref_op node type. This can be determined by
- * examining the state of the sym_m_exp_eval flag in the
- * b_aux_flags field.
- */
-
-
-if ((val_entry->b_aux_flags & sym_m_exp_eval) == 0)
- /*
- * Perform evaluations which depend on the type of the value
- */
- switch ( val_entry->b_type )
-/* END HAL Fix CR 4774 */
- {
- case sym_k_integer_value:
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- break;
- case sym_k_compound_string_value:
- sem_evaluate_value_cs (val_entry);
- break;
-/* BEGIN OSF Fix CR 4859 */
-/* END OSF Fix CR 4859 */
- case sym_k_string_table_value:
- {
- sym_value_entry_type *value_segment;
- for (value_segment=val_entry->az_first_table_value;
- value_segment!=NULL;
- value_segment=value_segment->az_next_table_value)
- {
- sem_evaluate_value_expr (value_segment);
- if ((value_segment->b_type == sym_k_char_8_value) ||
- (value_segment->b_type == sym_k_localized_string_value))
- {
- sym_value_entry_type *cstr;
- sym_value_entry_type *save_next;
-
- save_next = (sym_value_entry_type *)
- (value_segment -> az_next_table_value);
- cstr = (sym_value_entry_type *) sem_create_cstr();
- sem_append_str_to_cstr( cstr,
- value_segment, FALSE);
- _sym_copy_entry (value_segment,
- cstr,
- sym_k_value_entry_size );
- value_segment -> az_next_table_value =
- save_next;
- cstr->value.xms_value = NULL;
- cstr->az_first_table_value = NULL;
- sem_free_node (( sym_entry_type *)cstr);
- }
- if (value_segment->b_type != sym_k_compound_string_value)
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_pos2( value_segment ),
- diag_value_text( value_segment->b_type),
- diag_value_text( sym_k_compound_string_value ) );
- sem_evaluate_value_cs (value_segment);
- }
- }
- break;
- case sym_k_integer_table_value:
- {
- sym_value_entry_type *value_segment;
-
- for (value_segment=val_entry->az_first_table_value;
- value_segment!=NULL;
- value_segment=value_segment->az_next_table_value)
- {
- sem_evaluate_value_expr (value_segment);
- if (value_segment->b_type != sym_k_integer_value &&
- value_segment->b_type != sym_k_horizontal_integer_value &&
- value_segment->b_type != sym_k_vertical_integer_value)
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_pos2( value_segment ),
- diag_value_text( value_segment->b_type),
- diag_value_text( sym_k_integer_value ) );
- }
- }
- break;
- case sym_k_asciz_table_value:
- case sym_k_trans_table_value:
- {
- sym_value_entry_type *value_segment;
-
- for (value_segment=val_entry->az_first_table_value;
- value_segment!=NULL;
- value_segment=value_segment->az_next_table_value)
- {
- sem_evaluate_value_expr (value_segment);
- if ((value_segment->b_type != sym_k_char_8_value) &&
- (value_segment->b_type != sym_k_localized_string_value))
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_pos2( value_segment ),
- diag_value_text( value_segment->b_type),
- diag_value_text( sym_k_char_8_value ) );
- }
- }
- break;
- case sym_k_font_table_value:
- {
- sym_value_entry_type *value_segment;
-
- for (value_segment=val_entry->az_first_table_value;
- value_segment!=NULL;
- value_segment=value_segment->az_next_table_value)
- {
- sem_evaluate_value_expr (value_segment);
- if ((value_segment->b_type != sym_k_char_8_value) &&
- (value_segment->b_type != sym_k_localized_string_value) &&
- (value_segment->b_type != sym_k_font_value) &&
- (value_segment->b_type != sym_k_fontset_value))
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_pos2( value_segment ),
- diag_value_text( value_segment->b_type),
- diag_value_text( sym_k_char_8_value ) );
- }
- break;
- }
-/*
- * Fix for CR 5403 - check to make sure each item in the rgb table is an
- * integer value. If not, print an error message. Treat
- * this exactly like the integer_table_value section above.
- */
- case sym_k_rgb_value:
- {
- sym_value_entry_type *value_segment;
-
- for (value_segment=val_entry->az_first_table_value;
- value_segment!=NULL;
- value_segment=value_segment->az_next_table_value)
- {
- sem_evaluate_value_expr (value_segment);
- if (value_segment->b_type != sym_k_integer_value &&
- value_segment->b_type != sym_k_identifier_value &&
- value_segment->b_type != sym_k_horizontal_integer_value &&
- value_segment->b_type != sym_k_vertical_integer_value)
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_pos2( value_segment ),
- diag_value_text( value_segment->b_type),
- diag_value_text( sym_k_integer_value ) );
- }
- }
- break;
-/*
- * End Fix for CR 5403
- */
- case sym_k_color_table_value:
- {
- sym_color_element *colorVec;
- int ndx;
-
- colorVec = val_entry->value.z_color;
- for ( ndx=0 ; ndx<(int)val_entry->b_table_count ; ndx++ )
- if ( (int)colorVec[ndx].b_index > 1 ) /* omit FG, BG */
-/*
- * Fix for CR 5428 - check to make sure that the expression result is a
- * color value. If not, print diagnostics.
- */
- {
- sem_evaluate_value_expr (colorVec[ndx].az_color);
- if ((colorVec[ndx].az_color->b_type != sym_k_color_value) &&
- ( colorVec[ndx].az_color->b_type != sym_k_rgb_value))
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_pos2( colorVec[ndx].az_color ),
- diag_value_text( colorVec[ndx].az_color->b_type),
- diag_value_text( sym_k_color_value ) );
- }
-/*
- * End Fix for CR 5428
- */
- break;
- }
- case sym_k_pixmap_value:
- case sym_k_icon_value:
- {
- sym_icon_element *iconDesc;
- sym_value_entry_type *cTable;
-
- iconDesc = val_entry->value.z_icon;
-
-/* BEGIN OSF Fix pir 2869*/
- if ( iconDesc == NULL )
- break;
- else cTable = iconDesc->az_color_table;
-/* END OSF Fix pir 2869 */
- if ( cTable == NULL )
- break;
- switch ( cTable->b_type )
- {
- case sym_k_color_table_value:
- {
- sym_color_element *colorVec;
- int vecLen = cTable->b_table_count;
- int ndx;
- int i, j;
- boolean found;
- char *row;
- sym_value_entry_type *rowEntry;
-
- /*
- * Find each icon character in the table, and replace its
- * character by its index.
- */
- colorVec = cTable->value.z_color;
- rowEntry = iconDesc->az_rows;
- for ( ndx=0 ;
- ndx<(int)iconDesc->w_height ;
- ndx++, rowEntry=rowEntry->az_next_table_value )
- for ( row = rowEntry->value.c_value, i = 0 ;
- i<(int)rowEntry->w_length ;
- i++)
- {
- found = FALSE;
- for ( j=0 ; j<vecLen ; j++ )
- {
- if (colorVec[j].b_letter == row[i])
- {
- found = TRUE;
- row[i] = colorVec[j].b_index;
- break;
- }
- }
-
- if ( ! found )
- {
- diag_issue_diagnostic
- (d_icon_letter,
- _sar_source_pos2(rowEntry),
- ndx+1,
- i+1,
- row[i]);
- }
- }
-
- }
- case sym_k_error_value:
- break;
- default:
- diag_issue_diagnostic
- (d_wrong_type,
- _sar_source_pos2(cTable),
- diag_value_text(cTable->b_type),
- diag_value_text(sym_k_color_table_value));
- break;
- }
- break;
- }
- }
-/*
- * Perform evaluations which depend on evaluating expressions
- */
-return(sem_evaluate_value_expr (val_entry));
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function evaluates a compound string value node, and
-** returns the resulting compound string.
-**
-** FORMAL PARAMETERS:
-**
-** csval_entry pointer to the value node to be evaluated
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** none
-**
-** SIDE EFFECTS:
-**
-** The value and length fields for the value entry are set.
-**
-**--
-**/
-
-sym_value_entry_type *sem_evaluate_value_cs (csval_entry)
- sym_value_entry_type *csval_entry;
-
-{
-
-sym_value_entry_type *next_segment;
-
-XmString cstr_1;
-XmString cstr_r;
-int charset; /* sym_k_..._charset */
-char *csetptr; /* charset name string */
-
-_assert( (csval_entry->header.b_tag == sym_k_value_entry) &&
- (csval_entry->b_type == sym_k_compound_string_value),
- "value not compound string" );
-
-/*
- ** You can't do anyting about imported compound strings so return.
- */
-if ((csval_entry->obj_header.b_flags & sym_m_imported) != 0)
- return(csval_entry);
-
-/*
- ** If the pointer to the first segment of the compound string has been
- ** cleared (az_first_table_value) and there's a pointer to the evaluated
- ** compound string (value.xms_value), then we must have already evaluated
- ** this compound string. Leave!
- */
-if ((csval_entry->az_first_table_value == NULL) &&
- (csval_entry->value.xms_value != NULL))
- return(csval_entry);
-
-/*
- ** Get the first segment of the compound string and create
- ** a compound string for it.
- */
-next_segment = csval_entry->az_first_table_value;
-_assert( next_segment != NULL, "compound string with no segments" );
-
-/*
- ** If the csval_entry direction is set reset the first segments
- ** direction (actually it will be the only segments direction).
- */
-if (csval_entry->b_direction != NOSTRING_DIRECTION)
- {
- next_segment->b_direction = csval_entry->b_direction;
- };
-
-/*
- ** Initial segment: acquire character set, then
- ** create initial segment.
- */
-charset = sem_map_subclass_to_charset (next_segment->b_charset );
- csetptr = sem_charset_name
- (charset, next_segment->az_charset_value);
-
-if (next_segment->b_type == sym_k_localized_string_value)
- cstr_r = XmStringCreateLocalized(next_segment->value.c_value);
-else
- cstr_r =
- XmStringConcatAndFree(XmStringDirectionCreate(next_segment->b_direction),
- XmStringCreate(next_segment->value.c_value,
- csetptr));
-
-if (next_segment->b_aux_flags & sym_m_separate)
- cstr_r = XmStringConcatAndFree(cstr_r,
- XmStringSeparatorCreate());
-
-/*
- ** Loop through the rest of the segments of the string and append
- ** them to the first segment of the string.
- */
-for (next_segment = next_segment->az_next_table_value;
- next_segment != NULL;
- next_segment = next_segment->az_next_table_value)
- {
- /*
- ** Acquire each segment, and set the character set, as for the
- ** initial segment.
- */
- charset = sem_map_subclass_to_charset (next_segment->b_charset );
- csetptr = sem_charset_name
- (charset, next_segment->az_charset_value);
-
- /*
- ** Create this segment, then concatenate to the result string.
- ** Free the two inputs now that a concatenated result string
- ** exists.
- */
- cstr_1 =
- XmStringConcatAndFree(XmStringDirectionCreate(next_segment->b_direction),
- XmStringCreate(next_segment->value.c_value,
- csetptr));
-
- if (next_segment->b_aux_flags & sym_m_separate)
- cstr_1 = XmStringConcatAndFree(cstr_1,
- XmStringSeparatorCreate());
-
- cstr_r = XmStringConcatAndFree(cstr_r, cstr_1);
- }
-
-csval_entry->value.xms_value = cstr_r;
-csval_entry->w_length = XmStringLength (cstr_r);
-
-/*
-** Now deallocate the nodes for the compound string segments and put a null
-** in az_first_table_value
-*/
-for (next_segment = csval_entry->az_first_table_value;
- next_segment != NULL;
- next_segment = next_segment->az_next_table_value)
- sem_free_node (( sym_entry_type *)next_segment);
-
-csval_entry->az_first_table_value = NULL;
-
-_assert( csval_entry->w_length <= MrmMaxResourceSize, "compound string too long" );
-
-return (csval_entry);
-}
-/* BEGIN OSF Fix CR 4859 */
-
-/* END OSF Fix CR 4859 */
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function evaluates an expression, placing the resulting value
-** in the top-level value node of the expression tree. A flag is set
-** in the top-level node to indicate whether the evaluation has taken
-** place. The expression tree is left intact so that programs using
-** the callable UIL compiler will have access to the expression as well
-** as its evalutated value.
-**
-** FORMAL PARAMETERS:
-**
-** value_entry the top-level value node of the expression
-**
-** IMPLICIT INPUTS:
-**
-** IMPLICIT OUTPUTS:
-**
-** FUNCTION VALUE:
-**
-** The value node resulting from this operation
-**
-** SIDE EFFECTS:
-**
-**--
-**/
-
-sym_value_entry_type *sem_evaluate_value_expr (value_entry)
- sym_value_entry_type *value_entry;
-
-{
-
- /*
- * Local variables
- */
- char op1_type;
- char op2_type;
- char res_type;
- data_value_type op1_data;
- data_value_type op2_data;
- sym_value_entry_type *op1_entry;
- sym_value_entry_type *op2_entry;
- data_value_type *op1_ptr;
- data_value_type *op2_ptr;
- data_value_type res_data;
- sym_value_entry_type *cat_str_entry;
-
-
- /*
- ** If this isn't an operation or if we've already evaluated it, just
- ** leave. Also, guard against attempting to deal with NULLs.
- */
- if ( value_entry == NULL )
- return value_entry;
- if ( (value_entry->b_aux_flags & sym_m_exp_eval) != 0 )
- return value_entry;
- if ( value_entry->b_expr_opr == sym_k_unspecified_op )
- return value_entry;
-
- /*
- ** If we're just beginning to evaluate a new expression, increment the
- ** value for checking circular references.
- */
-
- if (!in_expr)
- ref_chk_value++;
- in_expr = TRUE;
-
- /*
- ** Check for circular references.
- ** Place a value in each node of this expression. If we see the same
- ** value again as we evaluate the expression, we've been here before
- ** (kind of like dropping bread crumbs).
- */
-
- if (value_entry->l_circular_ref_chk == ref_chk_value)
- {
- if ( value_entry->obj_header.az_name != NULL )
- diag_issue_diagnostic
- (d_circular_ref,
- _sar_source_pos2(value_entry),
- value_entry->obj_header.az_name->c_text);
- else
- diag_issue_diagnostic
- (d_circular_ref,
- _sar_source_pos2(value_entry),
- "unnamed value");
- return NULL;
- }
- value_entry->l_circular_ref_chk = ref_chk_value;
-
- /*
- ** Validate the first argument for the expression. If it is NULL,
- ** then return with no further processing, since this is usually
- ** due to previous compilation errors.
- */
- if ( value_entry->az_exp_op1 == NULL )
- return NULL;
- sem_evaluate_value_expr(value_entry->az_exp_op1);
- in_expr = TRUE;
- op1_type = validate_arg (value_entry->az_exp_op1,
- value_entry->b_expr_opr);
- op1_entry = value_entry->az_exp_op1;
- res_type = op1_type;
- /*
- ** If it's a binary expression, evaluate the second argument and
- ** perform any necessary conversions
- */
- if (value_entry->az_exp_op2 != NULL)
- {
- sem_evaluate_value_expr(value_entry->az_exp_op2);
- in_expr = TRUE;
- op2_type = validate_arg (value_entry->az_exp_op2,
- value_entry->b_expr_opr);
-
- /*
- ** Perform conversions
- */
-
- op2_entry = value_entry->az_exp_op2;
-
- res_type = op1_type;
- if (res_type < op2_type)
- res_type = op2_type;
-
- if (op1_type != res_type)
- {
- op1_ptr = &op1_data;
- if (res_type <= error_arg_type)
- op1_type = (* numeric_convert_table[ res_type ])
- ( op1_entry, op1_ptr );
- else if ((res_type != cstr_arg_type) &&
- (res_type != lstr_arg_type))
- {
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( res_type ) );
- res_type = error_arg_type;
- goto continue_after_error;
- }
- }
- else
- {
- op1_ptr = (data_value_type *) &(op1_entry->value);
- }
-
-
- if (op2_type != res_type)
- {
- op2_ptr = &op2_data;
- if (res_type <= error_arg_type)
- op2_type = (* numeric_convert_table[ res_type ])
- ( op2_entry, op2_ptr );
- else if ((res_type != cstr_arg_type) &&
- (res_type != lstr_arg_type))
- {
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( res_type ) );
- res_type = error_arg_type;
- goto continue_after_error;
- }
- }
- else
- {
- op2_ptr = (data_value_type *) &(op2_entry->value);
- }
- }
-
- /*
- ** Perform the operation
- */
-
- switch (value_entry->b_expr_opr)
- {
- case sym_k_unary_plus_op:
- switch (op1_type)
- {
- case integer_arg_type:
- case horizontal_integer_arg_type:
- case vertical_integer_arg_type:
- value_entry->value.l_integer = op1_entry->value.l_integer;
- value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
-
- case float_arg_type:
- case horizontal_float_arg_type:
- case vertical_float_arg_type:
- value_entry->value.d_real = op1_entry->value.d_real;
- value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
-
- case single_float_arg_type: /* single float data type RAP */
- value_entry->value.single_float = op1_entry->value.single_float;
- break;
-
- case error_arg_type:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_unary_minus_op:
- switch (op1_type)
- {
- case integer_arg_type:
- case horizontal_integer_arg_type:
- case vertical_integer_arg_type:
- value_entry->value.l_integer = - op1_entry->value.l_integer;
- value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
-
- case float_arg_type:
- case horizontal_float_arg_type:
- case vertical_float_arg_type:
- value_entry->value.d_real = - op1_entry->value.d_real;
- value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
-
- case single_float_arg_type: /* single float data type RAP */
- value_entry->value.single_float = - op1_entry->value.single_float;
- break;
-
- case error_arg_type:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_not_op:
- switch (op1_type)
- {
- case boolean_arg_type:
- value_entry->value.l_integer = ! op1_entry->value.l_integer;
- break;
-
- case integer_arg_type:
- value_entry->value.l_integer = ~ op1_entry->value.l_integer;
- break;
-
- case error_arg_type:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_comp_str_op:
- switch (op1_type)
- {
- case char_arg_type: /* char_8_type */
- case lstr_arg_type:
- sem_append_str_to_cstr(value_entry, value_entry->az_exp_op1, FALSE);
- value_entry->az_first_table_value->b_aux_flags =
- value_entry->b_aux_flags;
- /*
- * Fix for CN 16149 (DTS 10023) part 2 -- If it exists, put the
- * charset info collected by sar_chk_comp_str_attr() onto the
- * char_8 string data structure.
- */
- if (value_entry->b_charset != sym_k_error_charset) {
- value_entry->az_first_table_value->b_charset =
- value_entry->b_charset;
- if (value_entry->az_charset_value)
- value_entry->az_first_table_value->az_charset_value =
- value_entry->az_charset_value;
- }
- /* End fix for CN 16149 */
- sem_evaluate_value_cs(value_entry);
- res_type = cstr_arg_type;
- break;
- case cstr_arg_type: /* comp_str */;
- {
- XmString cstr;
-
- /*
- * If we're dealing with a combination 1-byte, 2-byte
- * string, then we have to evaluate it first. (if not
- * already done)
- */
- if (value_entry->az_exp_op1->az_first_table_value != NULL)
- {
- sem_evaluate_value_cs(value_entry->az_exp_op1);
- }
- /*
- * If there is a separater invoved, makes sure it gets
- * concatendated onto the end of the string. Also free
- * up used memory.
- */
- if ((value_entry->b_aux_flags
- & sym_m_separate) != 0 )
- {
- cstr = XmStringSeparatorCreate();
- value_entry->value.l_integer =
- (long)XmStringConcatAndFree((XmString)value_entry->az_exp_op1->
- value.l_integer, cstr);
- }
- else
- {
- value_entry->value.l_integer =
- value_entry->az_exp_op1->value.l_integer;
- }
-
- sem_evaluate_value_cs(value_entry);
-
- res_type = cstr_arg_type;
- };
- break;
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_wchar_str_op:
- switch (op1_type)
- {
- case lstr_arg_type: /* localized string type */
- sem_append_str_to_cstr(value_entry, value_entry->az_exp_op1, FALSE);
- value_entry->az_first_table_value->b_aux_flags =
- value_entry->b_aux_flags;
- /* BEGIN OSF Fix CR 4859 */
- /* END OSF Fix CR 4859 */
- res_type = wcstr_arg_type;
- break;
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_coerce_op:
- switch (value_entry->b_type)
- {
- case sym_k_compound_string_value:
- switch (op1_entry->b_type)
- {
- case sym_k_char_8_value:
- case sym_k_localized_string_value:
- sem_append_str_to_cstr
- (value_entry,
- op1_entry,
- FALSE);
- sem_evaluate_value_cs(value_entry);
- res_type = cstr_arg_type;
- break;
- case sym_k_compound_string_value:
- _sym_copy_entry (value_entry,
- op1_entry,
- sym_k_value_entry_size);
- res_type = cstr_arg_type;
- break;
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- break;
- }
- break;
-
- case sym_k_wchar_string_value:
- switch (op1_entry->b_type)
- {
- case sym_k_localized_string_value:
- sem_append_str_to_cstr
- (value_entry,
- op1_entry,
- FALSE);
- /* BEGIN OSF Fix CR 4859 */
- /* END OSF Fix CR 4859 */
- res_type = wcstr_arg_type;
- break;
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- break;
- }
- break;
-
- case sym_k_font_table_value:
- if ((op1_entry->b_type == sym_k_font_value) ||
- (op1_entry->b_type == sym_k_fontset_value))
- {
- value_entry->b_table_count = 1;
- value_entry->az_first_table_value = op1_entry;
- res_type = font_table_arg_type;
- }
- else
- {
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_font_value:
- if ((op1_entry->b_type == sym_k_char_8_value) ||
- (op1_entry->b_type == sym_k_localized_string_value) ||
- (op1_entry->b_type == sym_k_font_value))
- {
- value_entry->value.c_value = op1_entry->value.c_value;
- value_entry->w_length = op1_entry->w_length;
- res_type = font_arg_type;
- }
- else
- {
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_fontset_value:
- if ((op1_entry->b_type == sym_k_char_8_value) ||
- (op1_entry->b_type == sym_k_localized_string_value) ||
- (op1_entry->b_type == sym_k_fontset_value))
- {
- value_entry->value.c_value = op1_entry->value.c_value;
- value_entry->w_length = op1_entry->w_length;
- res_type = fontset_arg_type;
- }
- else
- {
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
-
- case sym_k_color_value:
- case sym_k_xbitmapfile_value:
- case sym_k_reason_value:
- case sym_k_argument_value:
- case sym_k_keysym_value:
- case sym_k_class_rec_name_value:
- switch (value_entry->b_type)
- {
- case sym_k_color_value:
- res_type = color_arg_type;
- break;
- case sym_k_xbitmapfile_value:
- res_type = xbitmap_arg_type;
- break;
- case sym_k_reason_value:
- res_type = reason_arg_type;
- break;
- case sym_k_argument_value:
- res_type = argument_arg_type;
- break;
- case sym_k_keysym_value:
- res_type = keysym_arg_type;
- break;
- /* Begin fixing CR 5429 */
- case sym_k_class_rec_name_value:
- res_type = classrec_arg_type;
- break;
- /* End fixing CR 5429 */
- }
- switch (op1_entry->b_type)
- {
- case sym_k_char_8_value:
- case sym_k_localized_string_value:
- value_entry->value.c_value = op1_entry->value.c_value;
- value_entry->w_length = op1_entry->w_length;
- break;
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- break;
- }
- break;
-
- case sym_k_integer_value:
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- res_type = integer_arg_type;
- switch (op1_entry->b_type)
- {
- case sym_k_bool_value:
- case sym_k_integer_value:
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- value_entry->value.l_integer = op1_entry->value.l_integer;
- value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
- case sym_k_float_value:
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- res_type = sem_convert_to_integer( op1_entry, &res_data );
- value_entry->value.l_integer = res_data.integer_value;
- value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
- case sym_k_single_float_value: /* single float data type RAP */
- res_type = sem_convert_to_integer( op1_entry, &res_data );
- value_entry->value.l_integer = res_data.integer_value;
- break;
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- break;
- }
- break;
- case sym_k_float_value:
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- res_type = float_arg_type;
- switch (op1_entry->b_type)
- {
- case sym_k_bool_value:
- case sym_k_integer_value:
- case sym_k_single_float_value: /* single float data type RAP */
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- res_type = sem_convert_to_float( op1_entry, &res_data );
- value_entry->value.d_real = res_data.real_value;
- value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
- case sym_k_float_value:
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- value_entry->value.d_real = op1_entry->value.d_real;
- value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- break;
- }
- break;
- case sym_k_single_float_value:
- res_type = single_float_arg_type;
- switch (op1_entry->b_type)
- {
- case sym_k_bool_value:
- case sym_k_integer_value:
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- case sym_k_float_value:
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- res_type = sem_convert_to_single_float( op1_entry, &res_data );
- value_entry->value.single_float = res_data.single_float_value;
- value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
- case sym_k_single_float_value:
- value_entry->value.single_float = op1_entry->value.single_float;
- break;
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- break;
- }
- break;
-
- case sym_k_error_value:
- break;
-
- default:
- /* Begin fixing CR 5429 */
- if ((op1_entry->b_type != sym_k_char_8_value) &&
- (op1_entry->b_type != sym_k_localized_string_value))
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_pos2( value_entry ),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( sym_k_char_8_value ) );
- else
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_pos2( value_entry ),
- "wrong",
- diag_value_text( sym_k_char_8_value ) );
- value_entry = sym_az_error_value_entry;
- res_type = error_arg_type;
- }
- break;
- /* End fixing CR 5429 */
-
- case sym_k_valref_op:
- {
- /*
- ** Copy all the value-related fields from the referenced
- ** node to the referencing node. All non value-related fields
- ** are left intact, except that the forward reference flag
- ** is turned off
- */
- value_entry->obj_header.b_flags &= ~sym_m_forward_ref;
- value_entry->b_type = op1_entry->b_type;
- value_entry->w_length = op1_entry->w_length;
- value_entry->b_table_count = op1_entry->b_table_count;
- value_entry->b_aux_flags = op1_entry->b_aux_flags;
- value_entry->b_arg_type = op1_entry->b_arg_type;
- value_entry->b_data_offset = op1_entry->b_data_offset;
- value_entry->b_pixel_type = op1_entry->b_pixel_type;
- value_entry->b_charset = op1_entry->b_charset;
- value_entry->b_direction = op1_entry->b_direction;
- value_entry->b_enumeration_value_code =
- op1_entry->b_enumeration_value_code;
- value_entry->az_first_table_value = op1_entry->az_first_table_value;
- value_entry->az_charset_value = op1_entry->az_charset_value;
- /*
- ** Because of alignment requirements, we can't just move the largest
- ** field of the union, but actually have to move the correct value
- ** field based upon the datatype.
- */
- switch (op1_entry->b_type)
- {
- case sym_k_integer_value:
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- value_entry->value.l_integer = op1_entry->value.l_integer;
- value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
- case sym_k_float_value:
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- value_entry->value.d_real = op1_entry->value.d_real;
- value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
- case sym_k_char_8_value:
- case sym_k_localized_string_value:
- value_entry->value.c_value = op1_entry->value.c_value;
- break;
- case sym_k_single_float_value:
- value_entry->value.single_float = op1_entry->value.single_float;
- break;
- case sym_k_color_value:
- value_entry->value.z_color = op1_entry->value.z_color;
- break;
- case sym_k_icon_value:
- value_entry->value.z_icon = op1_entry->value.z_icon;
- break;
- default:
- value_entry->value.az_data = op1_entry->value.az_data;
- break;
- }
- break;
- }
-
- case sym_k_add_op:
- switch (res_type)
- {
- case integer_arg_type:
- case horizontal_integer_arg_type:
- case vertical_integer_arg_type:
- value_entry->value.l_integer =
- op1_ptr->integer_value + op2_ptr->integer_value;
- if (op1_entry->b_arg_type != op2_entry->b_arg_type)
- {
- diag_issue_diagnostic(d_different_units,
- _sar_source_pos2(value_entry));
- res_type = error_arg_type;
- }
- else value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
-
- case float_arg_type:
- case horizontal_float_arg_type:
- case vertical_float_arg_type:
- value_entry->value.d_real =
- op1_ptr->real_value + op2_ptr->real_value;
- if (op1_entry->b_arg_type != op2_entry->b_arg_type)
- {
- diag_issue_diagnostic(d_different_units,
- _sar_source_pos2(value_entry));
- res_type = error_arg_type;
- }
- else value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
-
- case single_float_arg_type:
- value_entry->value.single_float =
- op1_ptr->single_float_value + op2_ptr->single_float_value;
- break;
-
- case error_arg_type:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_subtract_op:
- switch (res_type)
- {
- case integer_arg_type:
- case horizontal_integer_arg_type:
- case vertical_integer_arg_type:
- value_entry->value.l_integer =
- op1_ptr->integer_value - op2_ptr->integer_value;
- if (op1_entry->b_arg_type != op2_entry->b_arg_type)
- {
- diag_issue_diagnostic(d_different_units,
- _sar_source_pos2(value_entry));
- res_type = error_arg_type;
- }
- else value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
-
- case float_arg_type:
- case horizontal_float_arg_type:
- case vertical_float_arg_type:
- value_entry->value.d_real =
- op1_ptr->real_value - op2_ptr->real_value;
- if (op1_entry->b_arg_type != op2_entry->b_arg_type)
- {
- diag_issue_diagnostic(d_different_units,
- _sar_source_pos2(value_entry));
- res_type = error_arg_type;
- }
- else value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
-
- case single_float_arg_type:
- value_entry->value.single_float =
- op1_ptr->single_float_value - op2_ptr->single_float_value;
- break;
-
- case error_arg_type:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_multiply_op:
- switch (res_type)
- {
- case integer_arg_type:
- case horizontal_integer_arg_type:
- case vertical_integer_arg_type:
- value_entry->value.l_integer =
- op1_ptr->integer_value * op2_ptr->integer_value;
- if (op1_entry->b_arg_type != op2_entry->b_arg_type)
- {
- diag_issue_diagnostic(d_different_units,
- _sar_source_pos2(value_entry));
- res_type = error_arg_type;
- }
- else value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
-
- case float_arg_type:
- case horizontal_float_arg_type:
- case vertical_float_arg_type:
- value_entry->value.d_real =
- op1_ptr->real_value * op2_ptr->real_value;
- if (op1_entry->b_arg_type != op2_entry->b_arg_type)
- {
- diag_issue_diagnostic(d_different_units,
- _sar_source_pos2(value_entry));
- res_type = error_arg_type;
- }
- else value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
-
- case single_float_arg_type:
- value_entry->value.single_float =
- op1_ptr->single_float_value * op2_ptr->single_float_value;
- break;
-
- case error_arg_type:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_divide_op:
- switch (res_type)
- {
- case integer_arg_type:
- case horizontal_integer_arg_type:
- case vertical_integer_arg_type:
- value_entry->value.l_integer =
- op1_ptr->integer_value / op2_ptr->integer_value;
- if (op1_entry->b_arg_type != op2_entry->b_arg_type)
- {
- diag_issue_diagnostic(d_different_units,
- _sar_source_pos2(value_entry));
- res_type = error_arg_type;
- }
- else value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
-
- case float_arg_type:
- case horizontal_float_arg_type:
- case vertical_float_arg_type:
- value_entry->value.d_real =
- op1_ptr->real_value / op2_ptr->real_value;
- if (op1_entry->b_arg_type != op2_entry->b_arg_type)
- {
- diag_issue_diagnostic(d_different_units,
- _sar_source_pos2(value_entry));
- res_type = error_arg_type;
- }
- else value_entry->b_arg_type = op1_entry->b_arg_type;
- break;
-
- case single_float_arg_type:
- value_entry->value.single_float =
- op1_ptr->single_float_value / op2_ptr->single_float_value;
- break;
-
- case error_arg_type:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_left_shift_op:
- switch (res_type)
- {
- case integer_arg_type:
- {
- int shift_count;
-
- shift_count = op2_ptr->integer_value;
-
- if ((shift_count < 0) || (shift_count > 32))
- goto error_occurred;
-
- value_entry->value.l_integer =
- op1_ptr->integer_value << op2_ptr->integer_value;
-
- break;
- }
-
- case error_arg_type:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_right_shift_op:
- switch (res_type)
- {
- case integer_arg_type:
- {
- int shift_count;
-
- shift_count = op2_ptr->integer_value;
-
- if ((shift_count < 0) || (shift_count > 32))
- goto error_occurred;
-
- value_entry->value.l_integer =
- op1_ptr->integer_value >> op2_ptr->integer_value;
-
- break;
- }
-
- case error_arg_type:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_and_op:
- switch (res_type)
- {
- case integer_arg_type:
- case boolean_arg_type:
- value_entry->value.l_integer =
- op1_ptr->integer_value & op2_ptr->integer_value;
- break;
- case char_arg_type:
- case lstr_arg_type:
- sar_cat_value_entry( &cat_str_entry, op1_entry, op2_entry );
- value_entry->b_type = cat_str_entry->b_type;
- if (cat_str_entry->b_type == sym_k_compound_string_value)
- {
- res_type = cstr_arg_type;
- value_entry->az_first_table_value = cat_str_entry->az_first_table_value;
- }
- value_entry->b_charset = cat_str_entry->b_charset;
- value_entry->b_direction = cat_str_entry->b_direction;
- value_entry->value.c_value = cat_str_entry->value.c_value;
- value_entry->w_length = cat_str_entry->w_length;
- cat_str_entry->value.c_value = NULL;
- sem_free_node (( sym_entry_type *)cat_str_entry);
- break;
- case cstr_arg_type:
- sar_cat_value_entry( &cat_str_entry, op1_entry, op2_entry );
- value_entry->b_type = cat_str_entry->b_type;
- value_entry->b_charset = cat_str_entry->b_charset;
- value_entry->b_direction = cat_str_entry->b_direction;
- value_entry->value.xms_value = cat_str_entry->value.xms_value;
- value_entry->az_first_table_value =
- cat_str_entry->az_first_table_value;
- value_entry->w_length = cat_str_entry->w_length;
- sem_evaluate_value_cs (value_entry);
- cat_str_entry->value.xms_value = NULL;
- sem_free_node (( sym_entry_type *)cat_str_entry);
- break;
- case error_arg_type:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_or_op:
- switch (res_type)
- {
- case integer_arg_type:
- case boolean_arg_type:
- value_entry->value.l_integer =
- op1_ptr->integer_value | op2_ptr->integer_value;
- break;
-
- case error_arg_type:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
-
- case sym_k_xor_op:
- switch (res_type)
- {
- case integer_arg_type:
- case boolean_arg_type:
- value_entry->value.l_integer =
- op1_ptr->integer_value ^ op2_ptr->integer_value;
- break;
-
- case error_arg_type:
- break;
-
- default:
- diag_issue_diagnostic
- ( d_cannot_convert,
- _sar_source_pos2( value_entry),
- diag_value_text( op1_entry->b_type ),
- diag_value_text( value_entry->b_type ) );
- res_type = error_arg_type;
- }
- break;
- default:
- _assert( FALSE, "unexpected operator" );
- } /* End of switch statement */
-
-
- continue_after_error:
-
- /*
- ** Set data type for expression value. If binary operation, use res_type
- ** because conversions may have taken place. Otherwise use b_type from
- ** the operand of the unary operator.
- */
-
- if (value_entry->b_expr_opr == sym_k_valref_op)
- value_entry->b_type = op1_entry->b_type;
- else
- switch (res_type)
- {
- case boolean_arg_type:
- value_entry->b_type = sym_k_bool_value;
- break;
-
- case integer_arg_type:
- value_entry->b_type = sym_k_integer_value;
- break;
-
- case single_float_arg_type:
- value_entry->b_type = sym_k_single_float_value;
- break;
-
- case float_arg_type:
- value_entry->b_type = sym_k_float_value;
- break;
-
- case horizontal_integer_arg_type:
- value_entry->b_type = sym_k_horizontal_integer_value;
- break;
-
- case vertical_integer_arg_type:
- value_entry->b_type = sym_k_vertical_integer_value;
- break;
-
- case horizontal_float_arg_type:
- value_entry->b_type = sym_k_horizontal_float_value;
- break;
-
- case vertical_float_arg_type:
- value_entry->b_type = sym_k_vertical_float_value;
- break;
-
- case keysym_arg_type:
- value_entry->b_type = sym_k_keysym_value;
- break;
-
- case char_arg_type:
- case lstr_arg_type:
- value_entry->b_type = sym_k_char_8_value;
- break;
-
- case cstr_arg_type:
- value_entry->b_type = sym_k_compound_string_value;
- break;
-
- case wcstr_arg_type:
- value_entry->b_type = sym_k_wchar_string_value;
- break;
-
- case font_arg_type:
- value_entry->b_type = sym_k_font_value;
- break;
-
- case fontset_arg_type:
- value_entry->b_type = sym_k_fontset_value;
- break;
-
- case color_arg_type:
- value_entry->b_type = sym_k_color_value;
- break;
-
- /* Begin fixing CR 5429 */
- case classrec_arg_type:
- value_entry->b_type = sym_k_class_rec_name_value;
- break;
- /* End fixing CR 5429 */
-
- case xbitmap_arg_type:
- value_entry->b_type = sym_k_xbitmapfile_value;
- break;
-
- case reason_arg_type:
- value_entry->b_type = sym_k_reason_value;
- break;
-
- case argument_arg_type:
- value_entry->b_type = sym_k_argument_value;
- break;
-
- case font_table_arg_type:
- value_entry->b_type = sym_k_font_table_value;
- break;
-
- case error_arg_type:
- value_entry->b_type = sym_k_error_value;
- break;
-
- default:
- _assert( FALSE, "unexpected type" );
- }
-
- /*
- ** indicate that this expression has been evaluated
- */
-
- value_entry->b_aux_flags |= sym_m_exp_eval;
- in_expr = FALSE;
- return value_entry;
-
- /*
- ** Point where errors are transferred
- */
-
- error_occurred:
-
- diag_issue_diagnostic
- ( d_out_range,
- _sar_source_pos2( value_entry ),
- value_text[ res_type ],
- ""
- );
- res_type = error_arg_type;
- diag_reset_overflow_handler();
-
- goto continue_after_error;
-}
-
-\f
-int validate_arg( operand_entry, operator)
-
-sym_value_entry_type *operand_entry;
-int operator;
-
-{
-
- char operand_type;
-
- operand_type = operand_entry->b_type;
-
- if (operand_type == sym_k_error_value )
- return error_arg_type;
-
- if ((( 1 << operand_type ) & legal_operand_type[ operator ]) == 0)
- {
- diag_issue_diagnostic
- ( d_operand_type,
- _sar_source_pos2( operand_entry ),
- diag_value_text( operand_type ),
- operator_symbol[ operator ]
- );
- return error_arg_type;
- }
-
- if ((operand_entry->obj_header.b_flags & sym_m_imported) != 0)
- {
- sym_value_entry_type *value_entry;
-
- value_entry = operand_entry;
-
- diag_issue_diagnostic
- ( d_nonpvt,
- _sar_source_pos2( operand_entry ),
- value_entry->obj_header.az_name->c_text
- );
- return error_arg_type;
- }
-
- switch (operand_type)
- {
- case sym_k_bool_value:
- return boolean_arg_type;
-
- case sym_k_integer_value:
- return integer_arg_type;
-
- case sym_k_float_value:
- return float_arg_type;
-
- case sym_k_single_float_value:
- return single_float_arg_type;
-
- case sym_k_horizontal_integer_value:
- return horizontal_integer_arg_type;
-
- case sym_k_vertical_integer_value:
- return vertical_integer_arg_type;
-
- case sym_k_horizontal_float_value:
- return horizontal_float_arg_type;
-
- case sym_k_vertical_float_value:
- return vertical_float_arg_type;
-
- case sym_k_char_8_value:
- return char_arg_type;
-
- case sym_k_compound_string_value:
- return cstr_arg_type;
-
- case sym_k_localized_string_value:
- return lstr_arg_type;
-
- case sym_k_wchar_string_value:
- return wcstr_arg_type;
-
- case sym_k_font_value:
- return font_arg_type;
-
- case sym_k_fontset_value:
- return fontset_arg_type;
-
- case sym_k_color_value:
- return color_arg_type;
-
- default:
- return error_arg_type;
- }
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function converts a value to floating point.
-**
-** FORMAL PARAMETERS:
-**
-** operand_entry frame of the value to convert
-** data_value data structure to hold float result
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** float_arg_type if operation succeeds
-** error_arg_type if operation fails
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-int sem_convert_to_float(operand_entry, data_value)
-
-sym_value_entry_type *operand_entry;
-data_value_type *data_value;
-
-{
- switch (operand_entry->b_type)
- {
- case sym_k_error_value:
- return error_arg_type;
-
- case sym_k_integer_value:
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- case sym_k_bool_value:
- data_value->real_value = operand_entry->value.l_integer;
- return float_arg_type;
-
- case sym_k_single_float_value: /* single float data type RAP */
- data_value->real_value = operand_entry->value.single_float;
- return float_arg_type;
-
- case sym_k_float_value:
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- data_value->real_value = operand_entry->value.d_real;
- return float_arg_type;
-
- default:
- _assert( FALSE, "unexpected operand type" );
- }
- return error_arg_type;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function converts a value to type integer
-**
-** FORMAL PARAMETERS:
-**
-** operand_entry frame of the value to convert
-** data_value data structure to hold integer result
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** integer_arg_type if operation succeeds
-** error_arg_type if operation fails
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-int sem_convert_to_integer(operand_entry, data_value)
-
-sym_value_entry_type *operand_entry;
-data_value_type *data_value;
-
-{
- int res_type;
-
- uil_az_error_env_valid = TRUE;
- if (setjmp(uil_az_error_env_block) == 0 )
- {
- switch (operand_entry->b_type)
- {
- case sym_k_error_value:
- res_type = error_arg_type;
- break;
-
- case sym_k_integer_value:
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- case sym_k_bool_value:
- data_value->integer_value = operand_entry->value.l_integer;
- res_type = integer_arg_type;
- break;
-
- case sym_k_float_value:
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- data_value->integer_value = operand_entry->value.d_real;
- res_type = integer_arg_type;
- break;
-
- case sym_k_single_float_value: /* single float data type RAP */
- data_value->integer_value =
- (int) operand_entry->value.single_float;
- res_type = integer_arg_type;
- break;
-
- default:
- _assert( FALSE, "unexpected operand type" );
- }
-
- uil_az_error_env_valid = FALSE;
- return res_type;
- }
- else
- {
- diag_issue_diagnostic
- ( d_out_range,
- _sar_source_pos2( operand_entry ),
- value_text[ integer_arg_type ],
- ""
- );
- diag_reset_overflow_handler();
- uil_az_error_env_valid = FALSE;
- return error_arg_type;
- }
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function converts a value to single floating point.
-** (RAP single float data type)
-**
-** FORMAL PARAMETERS:
-**
-** operand_entry symbol table entry of the value to convert
-** data_value data structure to hold float result
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** single_float_arg_type if operation succeeds
-** error_arg_type if operation fails
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-int sem_convert_to_single_float(operand_entry, data_value)
-
-sym_value_entry_type *operand_entry;
-data_value_type *data_value;
-
-{
- switch (operand_entry->b_type)
- {
- case sym_k_error_value:
- return error_arg_type;
-
- case sym_k_integer_value:
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- case sym_k_bool_value:
- data_value->single_float_value = (float)operand_entry->value.l_integer;
- return single_float_arg_type;
-
- case sym_k_float_value:
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- data_value->single_float_value = (float)operand_entry->value.d_real;
- return single_float_arg_type;
-
- default:
- _assert( FALSE, "unexpected operand type" );
- }
- return error_arg_type;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function converts a value to an error - just needed to
-** fill a slot in the conversion table.
-**
-** FORMAL PARAMETERS:
-**
-** operand_entry frame of the value to convert
-** data_value not used
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** error_arg_type
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-int sem_convert_to_error(operand_entry, data_value)
-
-sym_value_entry_type *operand_entry;
-data_value_type *data_value;
-
-{
- return error_arg_type;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function processes the concatenation of 2 strings.
-**
-** FORMAL PARAMETERS:
-**
-** operator_entry [in/out] pointer to resultant value stack frame
-** op1_entry [in] pointer to operand 1 value frame
-** op2_entry [in] pointer to operand 2 value frame
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** error message is issued if value is out of range
-**
-**--
-**/
-
-void sar_cat_value_entry( target_entry, op1_entry, op2_entry )
-
-sym_value_entry_type **target_entry;
-sym_value_entry_type *op1_entry;
-sym_value_entry_type *op2_entry;
-
-{
-
-/*
-** For pcc conversion, use defines instead of this enum.
-**
-** enum op_state
-** {
-** error=0, simple, compound,
-** };
-*/
-
-#define k_op_state_error 0
-#define k_op_state_simple 1
-#define k_op_state_compound 2
-#define k_op_state_localized 4
-
- int target_type;
- sym_value_entry_type *value1_entry;
- sym_value_entry_type *value2_entry;
- unsigned int op1_state;
- unsigned int op2_state;
-
- /*
- ** The target type is dependent on the type of the sources. If both
- ** operands are primitive and have the same writing direction and
- ** charset, the result is still of that type. If both operands are
- ** localized strings, the result is a localized string. If not, the result
- ** is a compound string.
- */
-
- switch (op1_entry->b_type)
- {
- case sym_k_char_8_value:
- op1_state = k_op_state_simple;
- break;
- case sym_k_compound_string_value:
- op1_state = k_op_state_compound;
- break;
- case sym_k_localized_string_value:
- op1_state = k_op_state_localized;
- break;
- case sym_k_error_value:
- op1_state = k_op_state_error;
- break;
- default:
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_pos2( op1_entry ),
- diag_value_text( op1_entry->b_type),
- "string or compound string" );
- op1_state = k_op_state_error;
- }
-
- switch (op2_entry->b_type)
- {
- case sym_k_char_8_value:
- op2_state = k_op_state_simple;
- break;
- case sym_k_compound_string_value:
- op2_state = k_op_state_compound;
- break;
- case sym_k_localized_string_value:
- op2_state = k_op_state_localized;
- break;
- case sym_k_error_value:
- op2_state = k_op_state_error;
- break;
- default:
- diag_issue_diagnostic
- ( d_wrong_type,
- _sar_source_pos2( op2_entry ),
- diag_value_text( op2_entry->b_type),
- "string or compound string" );
- op2_state = k_op_state_error;
- }
-
- value1_entry = op1_entry;
- value2_entry = op2_entry;
-
- /*
- ** Verify that both operands are private values
- */
- /* Begin fixing OSF CR 5509 */
- if ((op1_entry->obj_header.b_flags & (sym_m_private|sym_m_exported)) == 0)
- {
- op1_state = k_op_state_error;
- diag_issue_diagnostic
- (d_nonpvt,
- _sar_source_pos2 (op1_entry),
- value1_entry->obj_header.az_name->c_text );
- }
- if ((op2_entry->obj_header.b_flags & (sym_m_private|sym_m_exported)) == 0)
- {
- op2_state = k_op_state_error;
- diag_issue_diagnostic
- (d_nonpvt,
- _sar_source_pos2 (op2_entry),
- value2_entry->obj_header.az_name->c_text );
- }
- /* End fixing OSF CR 5509 */
- switch (op1_state + (op2_state<<3))
- {
- /*
- ** This is the case of appending two simple strings or a simple string
- ** and a localized string. Just append them
- ** unless they have different directions or the first one has the separate
- ** attribute.
- */
- case k_op_state_simple + (k_op_state_simple<<3):
- case k_op_state_simple + (k_op_state_localized<<3):
- case k_op_state_localized + (k_op_state_simple<<3):
- if ((value1_entry->b_charset == value2_entry->b_charset)
- &&
- ((value1_entry->b_direction) == (value2_entry->b_direction))
- &&
- ((value1_entry->b_aux_flags & sym_m_separate) == 0))
- {
- *target_entry = (sym_value_entry_type *)
- sem_cat_str_to_str
- (value1_entry, FALSE,
- value2_entry, FALSE);
- target_type = sym_k_char_8_value;
- }
- else
- {
- *target_entry = (sym_value_entry_type *) sem_create_cstr( );
- sem_append_str_to_cstr
- (*target_entry,
- value1_entry, FALSE);
- sem_append_str_to_cstr
- (*target_entry,
- value2_entry, FALSE);
- sem_evaluate_value_cs(*target_entry);
- target_type = sym_k_compound_string_value;
- }
- break;
-
- /*
- ** This is the case of one simple/localized and one compound string.
- ** Change the
- ** simple/localized to a compound and append them together. Depend on
- ** the append
- ** routine to do the right thing.
- */
- case k_op_state_simple + (k_op_state_compound<<3):
- case k_op_state_localized + (k_op_state_compound<<3):
- *target_entry = (sym_value_entry_type *) sem_create_cstr( );
- sem_append_str_to_cstr
- (*target_entry,
- value1_entry, FALSE);
- sem_evaluate_value_cs(*target_entry);
- /*
- * We must evaluate both entries to the XmStringConcat routine so
- * that it will work properly. However this MAY be a pointer to
- * a compound string, use that value instead or we will concat a
- * NULL value and lose part of the string.
- */
- if ((value2_entry->az_first_table_value == NULL) &&
- (value2_entry->value.xms_value == NULL))
- value2_entry->value.xms_value =
- value2_entry->az_exp_op1->value.xms_value;
- else
- sem_evaluate_value_cs(value2_entry);
-
- (*target_entry)->value.xms_value =
- XmStringConcat((*target_entry)->value.xms_value,
- value2_entry->value.xms_value);
- target_type = sym_k_compound_string_value;
- break;
-
- /*
- ** This is the case of one simple/localized and one compound string.
- ** Append the simple/localized to the compound.
- */
- case k_op_state_compound + (k_op_state_simple<<3):
- case k_op_state_compound + (k_op_state_localized<<3):
-
- *target_entry = (sym_value_entry_type *) sem_create_cstr( );
- sem_append_str_to_cstr
- (*target_entry,
- value2_entry, FALSE);
- sem_evaluate_value_cs (*target_entry);
- /*
- * We must evaluate both entries to the XmStringConcat routine so
- * that it will work properly. However this MAY be a pointer to
- * a compound string, use that value instead or we will concat a
- * NULL value and lose part of the string.
- */
- if ((value1_entry->az_first_table_value == NULL) &&
- (value1_entry->value.xms_value == NULL))
- value1_entry->value.xms_value =
- value1_entry->az_exp_op1->value.xms_value;
- else
- sem_evaluate_value_cs(value1_entry);
-
- (*target_entry)->value.xms_value =
- XmStringConcat (value1_entry->value.xms_value,
- (*target_entry)->value.xms_value);
- target_type = sym_k_compound_string_value;
- break;
-
- /*
- ** This is the case of two compound strings. Just let the append routine
- ** do the right thing.
- */
- case k_op_state_compound + (k_op_state_compound<<3):
- *target_entry = (sym_value_entry_type *) sem_create_cstr( );
- /*
- * We must evaluate both entries to the XmStringConcat routine so
- * that it will work properly. However this MAY be a pointer to
- * a compound string, use that value instead or we will concat a
- * NULL value and lose part of the string.
- */
- if ((value1_entry->az_first_table_value == NULL) &&
- (value1_entry->value.xms_value == NULL))
- value1_entry->value.xms_value =
- value1_entry->az_exp_op1->value.xms_value;
- else
- sem_evaluate_value_cs(value1_entry);
-
- if ((value2_entry->az_first_table_value == NULL) &&
- (value2_entry->value.xms_value == NULL))
- value2_entry->value.xms_value =
- value2_entry->az_exp_op1->value.xms_value;
- else
- sem_evaluate_value_cs(value2_entry);
-
- (*target_entry)->value.xms_value =
- XmStringConcat(value1_entry->value.xms_value,
- value2_entry->value.xms_value);
- target_type = sym_k_compound_string_value;
- break;
-
- /*
- ** This is the case of two localized strings. Just concatenate them.
- */
- case k_op_state_localized + (k_op_state_localized<<3):
- *target_entry = (sym_value_entry_type *)
- sem_cat_str_to_str
- (value1_entry, FALSE,
- value2_entry, FALSE);
- target_type = sym_k_localized_string_value;
-
- default: /* some form of error */
- target_type = sym_k_error_value;
- *target_entry = (sym_value_entry_type *) sym_az_error_value_entry;
- break;
- }
-
-}
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilSrcDef.h /main/10 1995/07/14 09:38:34 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file defines the interface to the UIL source
-** management procedures in the UIL compiler.
-**
-**--
-**/
-
-#ifndef UilSrcDef_h
-#define UilSrcDef_h
-
-
-/*
-** Interface to src_open_source
-*/
-
-#define src_k_open_normal 1 /* open succeeded */
-#define src_k_open_error 0 /* open was unsuccessful */
-
-/*
-** Close return statuses
-*/
-
-#define src_k_close_normal 1 /* close succeeded */
-#define src_k_close_error 0 /* close was unsuccessful */
-
-/*
-** Interface to src_get_source_line
-*/
-
-#define src_k_read_truncated 3 /* record truncated */
-#define src_k_read_error 2 /* error during read */
-#define src_k_read_normal 1 /* record read normally */
-#define src_k_end_source 0 /* end of source */
-
-/*
-** Source records describe the lines of the source program. The are
-** used to retrieve the source file for the listing and diagnostics.
-** Diagnostics randomly access these data structures by maintaining
-** the address of the corresponding source record in tokens, the parse
-** stack and symbol table entries. The listing file walks the source
-** records via the linked list provide by ar_next_source_record.
-*/
-
-
-
-
-
-
-#define _src_null_access_key( _key ) (_key.l_key == EOF)
-#define src_k_key_length 4
-
-typedef struct
-{
- unsigned long l_key;
-} z_key;
-
-typedef struct _src_message_item_type
-{
- struct _src_message_item_type *az_next_message;
- status l_message_number;
- unsigned char b_source_pos;
- char c_text[ 1 ];
-} src_message_item_type;
-
-#define src_message_item_type_size \
- (sizeof(src_message_item_type) -\
- sizeof( struct _src_message_item_type.c_text))
-
-typedef struct _src_machine_code_type
-{
- struct _src_machine_code_type *az_next_machine_code;
- unsigned short int w_offset;
- unsigned short int w_code_len;
- union {
- long q_longdata[1]; /* longword alias for data*/
- char c_data[ 1 ]; /* byte alias for data */
- } data;
-} src_machine_code_type;
-
-#define src_machine_code_type_size \
- (sizeof(src_machine_code_type) -\
- sizeof( struct _src_machine_code_type.c_text))
-
-/*
-** Mask for bits in b_flags of the source record
-*/
-
-#define src_m_form_feed (1<<0)
-#define src_m_unprintable_chars (1<<1)
-
-typedef struct _src_source_record_type
-{
- struct _src_source_record_type *az_next_source_record;
- src_message_item_type *az_message_list;
- unsigned short w_line_number;
- unsigned char b_file_number;
- unsigned char b_flags;
- z_key z_access_key;
- src_machine_code_type *az_machine_code_list;
- unsigned short w_machine_code_cnt;
-} src_source_record_type;
-
-/*
-** Source buffers describe the lines of the source program that are
-** currently being SCAN. Include files and macros a can cause a program
-** to have more than 1 source buffer. These buffers are managed as a
-** stack, implemented via a linked list.
-*/
-
-typedef struct _src_source_buffer_type
-{
- struct _src_source_buffer_type *az_prior_source_buffer;
- unsigned short w_current_line_number;
- unsigned short w_current_position;
- char b_file_number;
- char c_text[ src_k_max_source_line_length+1];
-} src_source_buffer_type;
-
-#endif /* UilSrcDef_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilSrcSrc.c /main/13 1997/03/12 15:21:40 dbl $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contains the procedure for managing the UIL source
-** files.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include "UilDefI.h"
-
-/* %COMPLETE */
-#include <sys/stat.h>
-
-
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-/*
-** define the source buffer data structures
-*/
-
-externaldef(uil_comp_glbl) src_source_buffer_type *src_az_current_source_buffer;
-externaldef(uil_comp_glbl) src_source_buffer_type *src_az_avail_source_buffer;
-externaldef(uil_comp_glbl) src_message_item_type *src_az_orphan_messages;
-/* %COMPLETE */
-externaldef(uil_comp_glbl) long Uil_file_size;
-struct stat stbuf;
-
-
-
-/*
-** define the source record data structures
-*/
-
-externaldef(uil_comp_glbl) src_source_record_type
- *src_az_current_source_record;
-externaldef(uil_comp_glbl) src_source_record_type
- *src_az_first_source_record;
-
-externaldef(uil_comp_glbl) uil_fcb_type
- *src_az_source_file_table[src_k_max_source_files];
-externaldef(uil_comp_glbl) int
- src_l_last_source_file_number;
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
- static uil_fcb_type *main_fcb;
- static char *include_dir;
- static unsigned short main_dir_len;
-
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure initializes the reading of the UIL source program.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** Uil_cmd_z_command
-**
-** IMPLICIT OUTPUTS:
-**
-** src_az_first_source_buffer
-** src_az_current_source_buffer
-** src_l_last_source_file_number
-** src_az_source_file_table
-** src_az_current_source_record
-** main_fcb
-** include_dir
-** main_dir_len
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** source file is opened
-** source buffer structure is setup
-** source record structure is setup
-**
-**--
-**/
-
-void
-src_initialize_source(void)
-{
- /* initialize source data structures */
-
- src_az_current_source_buffer = NULL;
- src_az_avail_source_buffer = NULL;
- src_l_last_source_file_number = -1;
- src_az_first_source_record = NULL;
- src_az_current_source_record =
- (src_source_record_type *) &src_az_first_source_record;
-
- /* Initialize Own storage */
-
- main_fcb = NULL;
- include_dir = NULL;
- main_dir_len = 0;
-
-
- /* open the source file */
- if ( Uil_cmd_z_command.ac_source_file == NULL )
- diag_issue_diagnostic (d_src_open,
- diag_k_no_source, diag_k_no_column,
- "<null file name>");
-
- src_open_file ( Uil_cmd_z_command.ac_source_file, NULL );
-
- /* fixes initial filename is NULL bug in callable UIL */
- Uil_current_file = Uil_cmd_z_command.ac_source_file;
-
- return;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure does the cleanup processing of the source files
-** structures.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** Uil_cmd_z_command
-** src_az_first_source_buffer
-** src_az_current_source_buffer
-** src_l_last_source_file_number
-** src_az_source_file_table
-** src_az_current_source_record
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** structures are freed
-**
-**--
-**/
-
-void
-Uil_src_cleanup_source(void)
-{
-
- int i; /* index over fcbs */
- src_source_buffer_type *buffer_to_free;
- src_source_record_type *record_to_free;
- src_machine_code_type *first_code_item;
- src_machine_code_type *code_item_to_free;
- status l_close_status;
-
- /*
- ** Loop through all open files freeing their fcbs
- */
- for (i = 0; i <= src_l_last_source_file_number; i++)
- {
- /* it is possible to get an error before the files are open,
- so check and see if table is NULL before opening */
- if (src_az_source_file_table[i] == NULL)
- continue;
- l_close_status = close_source_file (src_az_source_file_table[i]);
- if ( l_close_status == src_k_close_error )
- {
- diag_issue_diagnostic (d_src_close,
- diag_k_no_source, diag_k_no_column,
- src_az_source_file_table[i]->expanded_name);
- }
- _free_memory ((char*)src_az_source_file_table [i]);
- src_az_source_file_table[i] = NULL;
- }
-
- /*
- ** Loop through list of current source buffers, freeing them
- */
- while (src_az_current_source_buffer != NULL)
- {
- buffer_to_free = src_az_current_source_buffer;
- src_az_current_source_buffer =
- src_az_current_source_buffer->az_prior_source_buffer;
- _free_memory ((char*)buffer_to_free);
- }
-
- /*
- ** Loop through list of source records, freeing them
- */
- while (src_az_first_source_record != NULL)
- {
- record_to_free = src_az_first_source_record;
- first_code_item = record_to_free->az_machine_code_list;
-
- while (first_code_item != NULL)
- {
- code_item_to_free = first_code_item;
- first_code_item = first_code_item->az_next_machine_code;
- _free_memory((char *)code_item_to_free);
- }
-
- src_az_first_source_record =
- src_az_first_source_record->az_next_source_record;
- _free_memory ((char*)record_to_free);
- }
-
- /*
- ** Free Own storage
- */
-/* BEGIN OSF FIX pir 2240 */
- /* Memory pointed to by main_fcb already freed. */
-/* END OSF FIX pir 2240 */
- _free_memory (include_dir);
-
- return;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure opens a file and sets up the static pointers to
-** read from this file.
-**
-** FORMAL PARAMETERS:
-**
-** c_file_name file to open
-**
-** IMPLICIT INPUTS:
-**
-** src_az_first_source_buffer
-** src_az_current_source_buffer
-** src_l_last_source_file_number
-** src_az_source_file_table
-**
-** IMPLICIT OUTPUTS:
-**
-** src_az_first_source_buffer
-** src_az_current_source_buffer
-** src_l_last_source_file_number
-** src_az_source_file_table
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** input file is opened
-** input buffer structure is setup
-** input record structure is setup
-**
-**--
-**/
-
-void
-src_open_file (XmConst char *c_file_name,
- char *full_file_name)
-{
- uil_fcb_type *az_fcb; /* file control block ptr */
- status l_open_status; /* status variable */
- src_source_buffer_type *az_source_buffer; /* source buffer ptr */
-
- /* allocate fcb and source buffer */
-
- az_fcb = (uil_fcb_type *) _get_memory (sizeof (uil_fcb_type));
-
- if (src_az_avail_source_buffer != NULL) {
- az_source_buffer = src_az_avail_source_buffer;
- src_az_avail_source_buffer =
- src_az_avail_source_buffer->az_prior_source_buffer;
- } else {
- az_source_buffer =
- (src_source_buffer_type *)
- _get_memory (sizeof (src_source_buffer_type));
- }
-
- /* Call the OS-specific open file procedure */
-
- l_open_status = open_source_file (
- c_file_name,
- az_fcb,
- az_source_buffer );
-
- /* If the file is not found, a fatal error is generated. */
-
- if ( l_open_status == src_k_open_error ) {
- diag_issue_diagnostic( d_src_open,
- diag_k_no_source, diag_k_no_column,
- c_file_name );
- }
-
- /* put fcb in the file table */
-
- src_l_last_source_file_number++;
-
- if (src_l_last_source_file_number >= src_k_max_source_files) {
- diag_issue_diagnostic (
- d_src_limit,
- src_az_current_source_record,
- src_az_current_source_buffer -> w_current_position - 1,
- az_fcb->expanded_name );
- }
-
- src_az_source_file_table[ src_l_last_source_file_number ] = az_fcb;
-
- /* Complete the OS-independent initialization. Get the size of the file
- ** for %complete info then initialize a source
- ** buffer placing a null in the buffer will cause the lexical analyzer
- ** to start by reading the first line of the file
- */
-
- /* %COMPLETE */
- if (stat(az_fcb->expanded_name, &stbuf) == -1) {
- diag_issue_diagnostic( d_src_open,
- diag_k_no_source, diag_k_no_column,
- az_fcb->expanded_name );
- }
-
- Uil_file_size = stbuf.st_size;
-
- if (full_file_name != NULL)
- strcpy (full_file_name, az_fcb->expanded_name);
-
- az_fcb->v_position_before_get = FALSE;
-
- az_source_buffer->w_current_line_number = 0;
- az_source_buffer->b_file_number = src_l_last_source_file_number;
- az_source_buffer->w_current_position = 0;
- az_source_buffer->c_text[ 0 ] = 0;
-
- /* make the source buffer current */
-
- az_source_buffer->az_prior_source_buffer =
- src_az_current_source_buffer;
- src_az_current_source_buffer = az_source_buffer;
-
- return;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure reads the next source line;
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** src_az_source_file_table
-**
-** IMPLICIT OUTPUTS:
-**
-** src_az_current_source_buffer
-** src_az_current_source_record
-**
-** FUNCTION VALUE:
-**
-** src_k_end_source no more source lines
-** src_k_read_normal new line in the source buffer
-**
-** SIDE EFFECTS:
-**
-** may issue diagnostics if error occurs reading record
-** may restore previous source upon reaching end of current source
-**
-**--
-**/
-
-status
-src_get_source_line(void)
-{
- uil_fcb_type *az_fcb;
- src_source_record_type *az_source_record;
- status l_read_status;
-
- /* Return if already at the end of file */
-
- if (src_az_current_source_buffer == NULL)
- return src_k_end_source;
-
- /* Find the current fcb */
-
- az_fcb = src_az_source_file_table
- [ src_az_current_source_buffer->b_file_number ];
-
- /* Read the next record */
-
- l_read_status = get_line( az_fcb );
-
- /* Increment lines processed count, and update current file */
- Uil_lines_processed++;
- Uil_current_file = az_fcb->expanded_name;
-
- if ( (l_read_status == src_k_read_normal) ||
- (l_read_status == src_k_read_truncated) )
- {
- /* Read was successful
- * Set position to the start of the record */
-
- src_az_current_source_buffer->w_current_position = 0;
-
- /* Allocate and initialize a source record */
-
- az_source_record =
- (src_source_record_type *)
- _get_memory( sizeof( src_source_record_type ) );
-
- az_source_record->az_next_source_record = NULL;
- az_source_record->w_line_number =
- ++src_az_current_source_buffer->w_current_line_number;
- az_source_record->b_file_number =
- src_az_current_source_buffer->b_file_number;
- az_source_record->az_message_list = NULL;
- az_source_record->az_machine_code_list = NULL;
- az_source_record->w_machine_code_cnt = 0;
- az_source_record->z_access_key = az_fcb->last_key;
-
- /* was uninitialized; fixes listing problem on HP (RAP) */
- az_source_record->b_flags = 0;
-
- /* Link the source record to the end of source record list */
-
- src_az_current_source_record->az_next_source_record =
- az_source_record;
- src_az_current_source_record = az_source_record;
-
- if (l_read_status == src_k_read_truncated)
- diag_issue_diagnostic( d_src_truncate,
- src_az_current_source_record,
- diag_k_no_column,
- src_k_max_source_line_length );
-
- return src_k_read_normal;
- }
-
- /* Check for end of file */
-
- if (l_read_status == src_k_end_source)
- {
- src_source_buffer_type *az_prior_source_buffer;
-
- /* get prior source buffer */
-
- az_prior_source_buffer =
- src_az_current_source_buffer->az_prior_source_buffer;
-
- /* place current source buffer on the available list */
-
- src_az_current_source_buffer->az_prior_source_buffer =
- src_az_avail_source_buffer;
- src_az_avail_source_buffer = src_az_current_source_buffer;
-
- /* if there is no prior source buffer - return end of source */
-
- if (az_prior_source_buffer == NULL)
- return src_k_end_source;
-
- /* restore the prior buffer as current */
-
- src_az_current_source_buffer = az_prior_source_buffer;
-
- return src_k_read_normal;
- }
-
- /* must have been an error */
-
- diag_issue_diagnostic( d_src_read,
- src_az_current_source_record,
- diag_k_no_column,
- az_fcb->expanded_name );
-
- _assert( FALSE, "read past source error" );
- return(src_k_read_error);
-}
-
-\f
-
-
-\f
-
-
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** open the source file.
-**
-** FORMAL PARAMETERS:
-**
-** c_file_name source file to open
-** az_fcb file control block for the file
-** az_source_buffer source buffer for the file
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** src_k_open_normal
-** src_k_open_error
-**
-** SIDE EFFECTS:
-**
-** file is opened and has a source buffer associated with it
-**
-**--
-**/
-
-status
-open_source_file( XmConst char *c_file_name,
- uil_fcb_type *az_fcb,
- src_source_buffer_type *az_source_buffer )
-{
-
- static unsigned short main_dir_len = 0;
- boolean main_file;
- int i; /* loop index through include files */
- char buffer[256];
-
-
- /* place the file name in the expanded_name buffer */
-
- strcpy(buffer, c_file_name);
-
-/* Determine if this is the main file or an include file. */
-
- main_file = (main_fcb == NULL);
-
- if (main_file) {
-
- char XmConst * ptr;
- unsigned short len;
-
-/* Save the directory info for the main file. */
-
- for (len = strlen (c_file_name),
- ptr = & c_file_name [len - 1];
- len > 0; len--, ptr--) {
- if ((* ptr) == '/') {
- break;
- }
- }
-
- main_dir_len = len;
- main_fcb = az_fcb;
-
-/* Open the main file. */
-
- az_fcb->az_file_ptr = fopen(c_file_name, "r");
-
- } else {
- static char XmConst c_include_dir[]= "/usr/include/";
- Boolean search_user_include=True;
- Boolean specific_directory=False;
-
-/* See if the file name has a leading slash and set the flag.
- Look in the specified directory for the include file. If the dir
- is not specified (leading slash), look in the main file's directory */
-
- if (c_file_name[0] == '/') {
- specific_directory = True;
- }
-
- if (!specific_directory) {
- _move (buffer, main_fcb -> expanded_name, main_dir_len);
- _move (& buffer [main_dir_len],
- c_file_name, strlen (c_file_name) + 1); /* + NULL */
- } else {
- strcpy (buffer, c_file_name);
- }
-
-/* Open the include file. */
-
- az_fcb->az_file_ptr = fopen (buffer, "r");
-
-/* If a specific directory was specified, or if the file was found,
- then we are done. */
-
- if ( (specific_directory) || (az_fcb -> az_file_ptr != NULL) ) {
- goto open_label;
- }
-
-/* Look in the command line specified include directories, if any. */
-
- for (i = 0; i < Uil_cmd_z_command.include_dir_count; i++) {
- int inc_dir_len;
-
- inc_dir_len = strlen (Uil_cmd_z_command.ac_include_dir[i]);
- if (inc_dir_len == 0) {
- search_user_include = False;
- }
- _move (buffer, Uil_cmd_z_command.ac_include_dir[i], inc_dir_len);
-
- /* Add '/' if not specified at end of directory */
-
- if (Uil_cmd_z_command.ac_include_dir[i][inc_dir_len - 1] != '/') {
- buffer [inc_dir_len] = '/';
- inc_dir_len++;
- };
-
- _move (& buffer [inc_dir_len],
- c_file_name, strlen (c_file_name) + 1); /* + NULL */
-
- /* Open the include file. If found, we are done. */
-
- az_fcb->az_file_ptr = fopen (buffer, "r");
-
- if (az_fcb -> az_file_ptr != NULL) {
- goto open_label;
- }
- }
-
-/* Look in the default include directory. */
- if (search_user_include) {
- _move(buffer, c_include_dir, sizeof c_include_dir - 1); /* no NULL */
- _move(&buffer[sizeof c_include_dir - 1],
- c_file_name, strlen (c_file_name) + 1); /* + NULL */
-
-/* Open the include file. */
- az_fcb->az_file_ptr = fopen (buffer, "r");
- }
- }
-
-open_label:
-
- /* check the open status. */
-
- if (az_fcb->az_file_ptr == NULL)
- return src_k_open_error;
-
- /* open succeeded - place buffer address in fcb */
-
- az_fcb->c_buffer = az_source_buffer->c_text;
- az_fcb->c_buffer[ src_k_max_source_line_length ] = 0;
- strcpy(az_fcb->expanded_name, buffer);
-
- return src_k_open_normal;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** close the source file.
-**
-** FORMAL PARAMETERS:
-**
-** az_fcb file control block for the file
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** src_k_close_normal
-** src_k_close_error
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-status
-close_source_file( uil_fcb_type *az_fcb )
-{
- status l_close_status;
-
- /*
- ** Close the file
- */
-
- l_close_status = fclose (az_fcb->az_file_ptr);
-
- if ( l_close_status != EOF )
- return src_k_close_normal;
- else
- return src_k_close_error;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** read line of the source file.
-**
-** FORMAL PARAMETERS:
-**
-** az_fcb file control block for the file
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** src_k_read_normal
-** src_k_read_error
-** src_k_read_truncated
-** src_k_end_source
-**
-** SIDE EFFECTS:
-**
-** next record in file is read
-**
-**--
-**/
-
-status
-get_line( uil_fcb_type *az_fcb )
-{
- status l_read_status;
- char *c_new_line;
-
- /*
- ** if v_position_before_get is true, we need to reposition
- ** before the get because another retrieve has altered the
- ** current record.
- */
-
- if (az_fcb->v_position_before_get)
- {
- fseek( az_fcb->az_file_ptr,
- az_fcb->last_key.l_key,
- 0 );
- l_read_status = (status) (fgets(az_fcb->c_buffer,
- src_k_max_source_line_length,
- az_fcb->az_file_ptr) != NULL);
- az_fcb->v_position_before_get = FALSE;
- }
-
- /* get the current offset */
-
- az_fcb->last_key.l_key = ftell(az_fcb->az_file_ptr);
-
- /* read the next line */
-
- l_read_status = (status) (fgets(az_fcb->c_buffer,
- src_k_max_source_line_length,
- az_fcb->az_file_ptr) != NULL );
-
- if ( l_read_status != 0 )
- {
- /* Read was successful
- * Find \n character an replace with a null */
-
- c_new_line = (char *) strchr( az_fcb->c_buffer, '\n' );
-
- if (c_new_line == NULL) {
-
-/* Fix for CR 3044 -- only return truncated if not at eof */
-
- if (!feof(az_fcb->az_file_ptr))
- return src_k_read_truncated;
- } else {
- *c_new_line = 0;
- }
-
- return src_k_read_normal;
- }
-
- /* Check for end of file */
-
- if (feof(az_fcb->az_file_ptr))
- {
- if (sym_az_current_section_entry->prev_section != NULL)
- {
- sym_include_file_entry_type *include_entry;
-
- /*
- ** This is the end of an include file. Set the pointers so that the sections
- ** in the include file hang off the previous list correctly.
- */
- include_entry = (sym_include_file_entry_type *)
- sym_az_current_section_entry->prev_section->entries;
- include_entry->sections = sym_az_current_section_entry;
- sym_az_current_section_entry = sym_az_current_section_entry->prev_section;
- }
- return src_k_end_source;
- }
-
- /* must have been an error */
-
- return src_k_read_error;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** re-read line of the source file.
-**
-** FORMAL PARAMETERS:
-**
-** az_fcb file control block for the file
-** c_buffer pointer to buffer to hold the source line
-** z_access_key key to retrieve the source line
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** v_position_before_read = TRUE
-**
-** FUNCTION VALUE:
-**
-** true if the record can be retrieved
-** false if the record cannot be retrieved
-**
-** SIDE EFFECTS:
-**
-** change next record for the file
-**
-**--
-**/
-
-boolean
-reget_line( uil_fcb_type *az_fcb,
- char *c_buffer,
- XmConst z_key *z_access_key )
-{
- status l_read_status;
- char *c_new_line;
-
- fseek( az_fcb->az_file_ptr,
- z_access_key->l_key,
- 0 );
-
- l_read_status = (status) (fgets(c_buffer,
- src_k_max_source_line_length,
- az_fcb->az_file_ptr) != NULL );
-
- az_fcb->v_position_before_get = TRUE;
-
- if ( l_read_status != 0 )
- {
- /* Read was successful
- * Find \n character an replace with a null */
-
- c_new_line = (char *) strchr( c_buffer, '\n' );
-
- if (c_new_line == NULL) {
-
-/* Fix for CR 3044 -- only return truncated if not at eof */
-
- if (!feof(az_fcb->az_file_ptr))
- return src_k_read_truncated;
- } else {
- *c_new_line = 0;
- }
-
- return TRUE;
- }
-
- /* must have been an error */
-
- return FALSE;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** Given a source record, this function returns the file name of
-** the file containing that source record.
-**
-** FORMAL PARAMETERS:
-**
-** az_src_rec pointer to a source record structure
-**
-** IMPLICIT INPUTS:
-**
-** src_az_source_file_table
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** pointer to the file name string
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-char
-*src_get_file_name(XmConst src_source_record_type *az_src_rec)
-{
- uil_fcb_type *fcb;
-
- /* Find the correct fcb */
-
- fcb = src_az_source_file_table[ az_src_rec->b_file_number ];
-
- /* Return a pointer to file name */
-
- return fcb->expanded_name;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** Given a source record, this function retrieves the text of the
-** line corresponding to that source line.
-**
-** FORMAL PARAMETERS:
-**
-** az_src_rec pointer to a source record structure
-** c_buffer pointer to buffer to hold the text
-**
-** IMPLICIT INPUTS:
-**
-** src_az_source_file_table
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** true if there is a source line
-** false if there is no source line
-**
-** SIDE EFFECTS:
-**
-** buffer is set to the contents of source line
-**
-**--
-**/
-
-static char XmConst no_source[] = "[ source not available ]";
-
-
-
-boolean src_retrieve_source
-
- (XmConst src_source_record_type *az_src_rec,
- char *c_buffer)
-
-{
- uil_fcb_type *fcb;
-
- /* check if there is any source */
-
- if (az_src_rec == diag_k_no_source)
- {
- _move( c_buffer, no_source, sizeof no_source );
- return FALSE;
- }
-
- /*
- ** check if we are dealing with the current source record
- ** in which case we don't need to reread the source
- */
-
- if ((az_src_rec->b_file_number ==
- src_az_current_source_buffer->b_file_number)
- &&
- (az_src_rec->w_line_number ==
- src_az_current_source_buffer->w_current_line_number)
- )
- {
- strcpy( c_buffer,
- src_az_current_source_buffer->c_text);
- return TRUE;
- }
-
- /*
- ** Will have to reread the data from the file.
- */
-
- /* Find the correct fcb */
-
- fcb = src_az_source_file_table[ az_src_rec->b_file_number ];
-
- /* get the line */
-
- if (reget_line( fcb, c_buffer, (z_key *) &(az_src_rec->z_access_key) ))
- return TRUE;
-
- _move( c_buffer, no_source, sizeof no_source );
- return FALSE;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function adds diagnostic information to the source representation.
-** This permit diagnostics to be placed in the listing.
-**
-** FORMAL PARAMETERS:
-**
-** az_src_rec source line diagnostic issued against
-** l_src_pos offset of diagnostic in the source line
-** c_msg_text text of diagnostic
-** l_msg_number message number for diagnostic
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** diagnostic stuff away in the source structure
-**
-**--
-**/
-
-void
-src_append_diag_info( XmConst src_source_record_type *az_src_rec,
- XmConst int l_src_pos,
- XmConst char *c_msg_text,
- XmConst int l_msg_number )
-{
- src_message_item_type *az_msg_item;
- int l_msg_length;
- src_message_item_type *current;
- src_message_item_type **prior;
-
- /*
- ** create the message item and fill it in.
- */
-
- l_msg_length = strlen( c_msg_text ) + 1; /* includes null */
-
- az_msg_item = (src_message_item_type *)
- _get_memory( sizeof( src_message_item_type ) + l_msg_length );
-
- az_msg_item->l_message_number = l_msg_number;
- az_msg_item->b_source_pos = l_src_pos;
-
- _move( (az_msg_item->c_text), c_msg_text, l_msg_length );
-
- /*
- ** Link the message from its source line
- ** Messages are in ascending column order for a line with
- ** messages without column info at the end
- ** Messages without source are appended to a list of orphans
- */
-
- if (az_src_rec == diag_k_no_source)
- prior = &src_az_orphan_messages;
- else
- prior = (src_message_item_type **)&(az_src_rec->az_message_list);
-
- current = *prior;
-
- for (;
- current != NULL;
- prior = &(current->az_next_message),
- current = *prior )
- {
- if (l_src_pos < (int)current->b_source_pos)
- break;
- }
-
- az_msg_item->az_next_message = current;
- *prior = az_msg_item;
-
- return;
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function adds machine code information to the source
-** representation. This permits machine code to be placed in the listing.
-**
-** FORMAL PARAMETERS:
-**
-** az_src_rec source line machine code is associated with.
-** l_offset offset in the record for this code element
-** l_code_len length of the binary machine code buffer
-** c_code buffer containing the machine code in binary form
-** c_text_arg text of machine code; optional
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** Machine code stuffed away in the source structure
-**
-**--
-**/
-
-void
-src_append_machine_code ( src_source_record_type *az_src_rec,
- XmConst int l_offset,
- XmConst int l_code_len,
- XmConst char *c_code,
- XmConst char *c_text_arg )
-{
- src_machine_code_type *az_code_item;
- int l_text_len;
- XmConst char *c_text;
-
- if (c_text_arg == NULL) {
- c_text = "";
- } else {
- c_text = c_text_arg;
- }
-
- /*
- ** create the machine code item and fill it in.
- */
-
- l_text_len = strlen( c_text ) + 1; /* includes null */
-
- az_code_item = (src_machine_code_type *) _get_memory(
- sizeof( src_machine_code_type ) + l_text_len + l_code_len );
-
- az_code_item -> w_offset = l_offset;
- az_code_item -> w_code_len = l_code_len;
- _move( (az_code_item->data.c_data), c_code, l_code_len );
- _move( &(az_code_item->data.c_data [l_code_len]), c_text, l_text_len );
-
- /*
- ** Link the machine code to its source line, at the head of
- ** the machine code list.
- */
-
- az_code_item->az_next_machine_code = az_src_rec->az_machine_code_list;
- az_src_rec->az_machine_code_list = az_code_item;
- az_src_rec->w_machine_code_cnt++;
-
- return;
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilSymDef.h /main/12 1995/07/14 09:38:52 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file defines the interface to the UIL symbol table.
-**
-**--
-**/
-
-#ifndef UilSymDef_h
-#define UilSymDef_h
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include <Mrm/MrmPublic.h>
-#include <Xm/Xm.h>
-
-/*
-** constraint check access macro
-*/
-#define _constraint_check(arg) \
- (constraint_tab[((arg)-1)/8] & (1 << ((arg)-1)%8))
-
-/*
-** Hash table size
-*/
-
-/* MOVED TO DBDef.h */
-
-/*
-** Symbol tags. These values are used in the tag field of every object header
-** to identify the type of the entry.
-*/
-
-/* MOVED TO DBDef.h */
-
-
-/*
-** Common attribute masks -- These values are used in the b_flags field of
-** the object_header.
-*/
-
-/* MOVED TO DBDef.h */
-
-
-/*
-** Output states - order is important
-*/
-
-/* MOVED TO DBDef.h */
-
-
-\f
-/*
-** Constants to define compiler-recognized data types. It is
-** important that the names used in .wml language descriptions
-** match these names. These values were once automatically generated
-** by WML. They are now maintained by hand to reduce compiler
-** dependence on WML artifacts.
-*/
-/* MOVED TO DBDef.h */
-
-
-\f
-/*
-** Header for each symbol entry
-*/
-
-typedef struct
-{
- char b_tag;
- /* type of entry The values of this field ia a sym_k_XXX_entry as */
- /* defined above. */
- char b_type;
- /* generic subtype field usage depends on value of b_tag field */
- /* above (sym_k_value_entry -> b_type is a sym_k_XXX_value as */
- /* defined in UilSymGen.h, sym_k_list_entry -> b_type is a */
- /* sym_k_XXX_list as defined below, sym_k_widget_entry -> b_type */
- /* is a sym_k_XXX_object as defined in UilSymGen.h, */
- /* sym_k_child_entry -> b_type is a sym_k_XXX_child as defined in */
- /* UilSymGen.h, sym_k_section_entry -> b_type is a */
- /* sym_k_XXX_section as defined below). */
- /* */
- unsigned short w_node_size;
- /* size of the node in longwords */
- int user_data;
- /* not used directly by the compiler. It is for use by */
- /* applications making use of callable UIL only. */
-
- /*
- ** Fields to save source information about the symbol: We currently save
- ** five things. The source record where the symbol "begins" (begins is in
- ** quotes because this may point to just white space before the actual
- ** symbol), the position (character) within that record where the symbol
- ** begins, the source record where the symbol ends, the position within
- ** that record that symbol really begins (i.e. no white space or anything),
- ** and the position where the symbol definition ends.
- */
-
- struct _src_source_record_type *az_src_rec;
- /* Source record where symbol defined */
- unsigned char b_src_pos;
- /* Starting position within the source record */
- unsigned char b_end_pos;
- /* Ending position within the source record */
-
-} sym_entry_header_type;
-
-
-\f
-/*
-** Common view of a symbol entry
-*/
-
-typedef struct
-{
- sym_entry_header_type header;
- /* common part of all symbol entries. */
- char b_value[ 1 ];
- /* information specific to each different entry type. */
-} sym_entry_type;
-
-
-\f
-/*
-** Name entry
-*/
-
-/* Flags for name entries */
-
-#define sym_m_referenced (1 << 0)
- /* Used in the b_flags field of a name entry. Set if this name is */
- /* reference elsewhere in this UIL source module. */
-#define sym_m_cycle_checked (1 << 1)
- /* set if the widget entry for this name has been checked for */
- /* cyclic references. */
-#define sym_m_has_cycle (2 << 1)
- /* set if a cycle was detected for a widget entry */
-#define sym_m_charset (1 << 3)
- /* set if symbol being used as charset name. */
-
-typedef struct _sym_name_entry_type
-{
- sym_entry_header_type header;
- /* common header */
- sym_entry_type *az_object;
- /* pointer to the object entry with this name */
- struct _sym_name_entry_type *az_next_name_entry;
- /* next name on hash chain */
- struct _sym_name_entry_type *az_prev_name_entry;
- /* prev name on hash chain */
- int az_cycle_id;
- /* unique id for each cycle check */
- unsigned char b_flags;
- /* flags (possible value is sym_m_referenced as declared above) */
- char c_text[ 1 ];
- /* text of the name */
-} sym_name_entry_type;
-
-/*
-** Size of the fixed part of a name entry
-*/
-
-#define sym_k_name_entry_size (sizeof( sym_name_entry_type)- \
- sizeof( char[ 1 ]) )
-
-\f
-/*
-** Value entry
-*/
-
-/*
-** Types of values are included in UilSymDef.h
-*/
-
-/*
-** Charsets supported by UIL are defined via WML in UilSymGen.h
-*/
-
-
-\f
-/*
-** Common header for each "object" entry. This header is shared by all
-** widget, gadget, list, argument, callback, and control node types. It
-** always appears immediately following the standard entry header field. Also
-** defined here is a prototype node for these types of "object" entries.
-*/
-
-typedef struct
-{
- sym_name_entry_type * az_name;
- /* pointer to the name entry that holds the object name. */
- sym_entry_type * az_reference;
- /* pointer to the entry that references this object. */
- sym_entry_type * az_next;
- /* pointer to next entry in a list, if this entry is linked under */
- /* a list entry. */
- char * az_comment;
- /* pointer to comment entry associated with this object. */
- unsigned int b_flags;
- /* object flags. */
-} sym_obj_header_type;
-
-typedef struct
-{
- sym_entry_header_type header;
- /* common entry header */
- sym_obj_header_type obj_header;
- /* common object header */
-} sym_obj_entry_type;
-
-
-\f
-/*
-** This structure defines an element in a color table. A color table contains
-** an array of such elements.
-*/
-
-typedef struct
-{
- unsigned char b_letter;
- /* letter for this color */
- unsigned char b_index;
- /* index for this color */
- unsigned short w_desc_offset;
- /* descriptor offset at in context */
- struct _sym_value_entry_type *az_color;
- /* pointer to the value entry for this color */
-
-} sym_color_element;
-
-
-/*
-** This structure defines the data for an icon.
-*/
-
-typedef struct
-{
- unsigned short w_height;
- /* height in pixels of the icon */
- unsigned short w_width;
- /* width in pixels of the icon */
- struct _sym_value_entry_type *az_color_table;
- /* pointer to the value entry for the color table */
- struct _sym_value_entry_type *az_rows;
- /* pointer to the list of icon rows */
-
-} sym_icon_element;
-
-/*
-** This structure define an enumeration set entry
-*/
-
-/* MOVED TO DBDef.h */
-
-
-/*
-** Auxiliary sym_k_flags for values stored in b_aux_flags field
-*/
-
-#define sym_m_table_entry (1 << 0)
- /* This item is a component of table */
-#define sym_m_separate (1 << 2)
- /* add CDA separator to end of string */
-#define sym_m_sixteen_bit sym_m_separate
- /* character set is 16-bit */
-#define sym_m_exp_eval (1 << 3)
- /* if set, indicates that expression has already been evaluated */
-
-/*
-** Types of colors - stored in b_arg_type
-*/
-
-#define sym_k_unspecified_color 0
-#define sym_k_background_color 1
- /* This color should displayed in the background on a monochrome */
- /* display. */
-#define sym_k_foreground_color 2
- /* This color should displayed in the foreground on a monochrome */
- /* display. */
-
-/*
-** value sets defining expression operators
-*/
-
-/* MOVED TO DBDef.h */
-
-typedef struct _sym_value_entry_type
-{
- sym_entry_header_type header;
- /* common header */
- sym_obj_header_type obj_header;
- /* common header for objects */
- unsigned char b_type;
- /* b_type distinguishes usage. Possible values are sym_k_XXX_value */
- /* as defined in UilSymGen.h */
- unsigned short w_length;
- /* length for variable length types */
- char output_state;
- /* output_state (only byte is needed) */
- unsigned char b_table_count;
- /* number of strings in table, colors in a color table, or fonts in */
- /* a font table. */
- unsigned char b_aux_flags;
- /* auxiliary flags */
- unsigned char b_arg_type;
- /* type of argument value or monochrome treatment of a color */
- unsigned char b_data_offset;
- /* offset of bits in context for an icon */
- unsigned char b_pixel_type;
- /* pixel size encoding of an icon */
- unsigned char b_charset;
- /* character set of a string */
- unsigned char b_direction;
- /* writing direction of a string, from XmSTRING_DIRECTION_... */
- unsigned char b_max_index;
- /* max index in a color table */
- unsigned char b_expr_opr;
- /* operator for an expression value node */
- unsigned int l_circular_ref_chk;
- /* field to mark when checking for circular references */
- unsigned short int b_enumeration_value_code;
- /* if non-0, the node takes its value from the value of the */
- /* sym_k_..._enumval code in this field (currently integer) */
- MrmResource_id resource_id;
- /*
-resource id for private values. */
-
-/* Structure for different kinds of nodes pointing to other value nodes */
- struct _sym_value_entry_type * az_charset_value;
- /* pointer to value entry describing a userdefined charset. */
- /* Valid only when b_charset == sym_k_userdefined_charset */
- struct _sym_value_entry_type * az_next_table_value;
- /* next element for tables. */
- struct _sym_value_entry_type *az_first_table_value;
- /* pointer to first table entry (font, string, etc.) if */
- /* value is a table. */
- struct _sym_value_entry_type * az_exp_op1;
- struct _sym_value_entry_type * az_exp_op2;
- /* pointer to the one or two value operands of an */
- /* expression value node. Special operands have an */
- /* explicitly state semantic. */
-
-/* Union for the actual value of a value node */
- union _sym_value_entry_value_union
- {
- /* must be capable of holding a pointer, chs */
- long l_integer;
- /* value if an integer. */
- double d_real;
- /* value if a double float. */
- char *c_value;
- /* value of ASCIZ string */
- XmString xms_value;
- /* value of XmString */
- float single_float;
- /* value if a single float */
- sym_color_element *z_color;
- /* value if color table. */
- sym_icon_element *z_icon;
- /* value if icon */
- char *az_data;
- /* pointer to any other kind of allocated data */
- } value;
-} sym_value_entry_type;
-
-
-/*
-** Define the fixed size of the value entry structure
-*/
-
-#define sym_k_value_entry_size (sizeof(sym_value_entry_type))
-
-\f
-/*
-** List entry
-*/
-
-/*
-** The types of lists, values for the header.b_type field of a list entry.
-*/
-
-#define sym_k_error_list sym_k_error_entry
-#define sym_k_callback_list sym_k_callback_entry
-#define sym_k_argument_list sym_k_argument_entry
-#define sym_k_control_list sym_k_control_entry
-#define sym_k_proc_ref_list sym_k_proc_ref_entry
-
-typedef struct _sym_list_entry_type
-{
- sym_entry_header_type header;
- /* common header */
- sym_obj_header_type obj_header;
- /* common header for objects */
- unsigned short w_count;
- /* number of elements in the list. */
- unsigned short w_gadget_count;
- /* number of gadgets in the list. */
-} sym_list_entry_type;
-
-/*
-** Define the size of the list structure
-*/
-
-#define sym_k_list_entry_size (sizeof(sym_list_entry_type))
-
-
-\f
-/*
-** Nested List entry
-*/
-
-/*
-** A nested list entry appears in a list as the entry specifying a reference
-** to another list (a nested list reference). It has its b_type field set
-** to the list type (necessarily the same type as the list it is contained
-** in, and the list it points to). The az_next field locates the next list
-** element, as usual. The az_list field points to the list entry for the
-** list which is referenced.
-*/
-
-typedef struct _sym_nested_list_entry_type
-{
- sym_entry_header_type header;
- /* common header */
- sym_obj_header_type obj_header;
- /* common header for objects */
- sym_list_entry_type *az_list;
- /* pointer to the referenced list */
-} sym_nested_list_entry_type;
-
-/*
-** Define the size of the nested_list structure
-*/
-
-#define sym_k_nested_list_entry_size (sizeof(sym_nested_list_entry_type))
-
-
-\f
-/*
-** Argument entry
-*/
-
-typedef struct _sym_argument_entry_type
-{
- sym_entry_header_type header;
- /* common entry header */
- sym_obj_header_type obj_header;
- /* common object header */
- sym_value_entry_type * az_arg_name;
- /* pointer to the value entry containing the argument name. */
- sym_value_entry_type * az_arg_value;
- /* pointer to the value entry containing the argument value. */
-} sym_argument_entry_type;
-
-#define sym_k_argument_entry_size (sizeof(sym_argument_entry_type))
-
-\f
-/*
-** Procedure Definition Entry
-*/
-
-typedef struct
-{
- sym_entry_header_type header;
- /* common header. */
- sym_obj_header_type obj_header;
- /* common header for objects */
- unsigned char v_arg_checking;
- /* should argument type be checked. */
- unsigned char b_arg_count;
- /* number of arguments. */
- unsigned char b_arg_type;
- /* The type of single argument (tag) for this procedure. It should */
- /* be a sym_k_XXX_value as defined in UilDBDef.h. */
- unsigned char b_widget_type;
- /* If b_arg_type is sym_k_widget_ref_value, then this field should */
- /* be a sym_k_XXX_object as defined in UilSymGen.h or */
- /* (uil_max_object + 1) if the type is unspecified. */
-} sym_proc_def_entry_type;
-
-#define sym_k_proc_def_entry_size (sizeof( sym_proc_def_entry_type))
-
-\f
-/*
-** Procedure Reference Entry
-*/
-
-typedef struct
-{
- sym_entry_header_type header;
- /* common header. */
- sym_obj_header_type obj_header;
- /* common object header. */
- sym_proc_def_entry_type *az_proc_def;
- /* pointer to the procedure definition entry for the procedure to */
- /* be called. */
- sym_value_entry_type *az_arg_value;
- /* pointer to the value entry for the argument to be passed as the */
- /* callback tag to the procedure. */
-} sym_proc_ref_entry_type;
-
-#define sym_k_proc_ref_entry_size (sizeof( sym_proc_ref_entry_type))
-
-
-/*
-** These values are passed from the grammar to the semantic action routines
-** (SAR) to identify how the procedure is used.
-*/
-#define sym_k_callback_proc 1
- /* The procedure was used as a callback routine. */
-#define sym_k_object_proc 2
- /* The procedure was used as a creation routine for a user defined */
- /* widget */
-\f
-
-/*
-** Callback entry
-*/
-
-typedef struct _sym_callback_entry_type
-{
- sym_entry_header_type header;
- /* common entry header. */
- sym_obj_header_type obj_header;
- /* common object header. */
- sym_value_entry_type * az_call_reason_name;
- /* pointer to the value entry containing the reason (callback) name */
- sym_proc_ref_entry_type * az_call_proc_ref;
- /* pointer to the procedure reference to be invoked for this */
- /* callback reason. */
- sym_list_entry_type * az_call_proc_ref_list;
- /* list entry of procedure references when multiple callbacks are */
- /* used for the callback. */
-} sym_callback_entry_type;
-
-#define sym_k_callback_entry_size (sizeof(sym_callback_entry_type))
-
-\f
-/*
-** Parent list for widgets and gadgets
-**
-** This list contains pointers to each of the widgets and gadgets that
-** reference the current widget in their control list. This information is
-** required in order to check constraint arguments.
-*/
-
-typedef struct _sym_parent_list_type
-{
- sym_entry_header_type header;
- /* common entry header */
- struct _sym_widget_entry_type * parent;
- /* pointer to a widget entry that references the originating widget */
- /* in its controls list. */
- struct _sym_parent_list_type * next;
- /* pointer to next parent list entry. */
-} sym_parent_list_type;
-
-#define sym_k_parent_list_size (sizeof(sym_parent_list_type))
-
-\f
-
-/*
-** Widget entry and Gadget entry
-**
-** Gadgets have the same form as a widget. They are distinguished
-** simply by the setting of sym_m_obj_is_gadget in obj_header.b_flags .
-*/
-
-
-
-/* widget and gadget node structure. */
-
-typedef struct _sym_widget_entry_type
-{
- sym_entry_header_type header;
- /* common entry header */
- sym_obj_header_type obj_header;
- /* common object header */
- sym_list_entry_type * az_callbacks;
- /* pointer to a list entry of type sym_k_callback_list which */
- /* contains the callbacks for this widget. */
- sym_list_entry_type * az_arguments;
- /* pointer to a list entry of type sym_k_argument_list which */
- /* contains the arguments for this widget. */
- sym_list_entry_type * az_controls;
- /* pointer to a list entry of type sym_k_controls_list which */
- /* contains the widgets that are children (are controlled by) this */
- /* widget. */
- sym_proc_ref_entry_type * az_create_proc;
- /* for user_defined widgets this points to the procedure reference */
- /* entry that specifies the creation routine for the widget. */
- sym_parent_list_type * parent_list;
- /* pointer to a parent list entry that links all objects which */
- /* reference this object in there controls lists. It is used to */
- /* traverse through the parents to verify that all contraint */
- /* arguments specified on this widget are really inherited from one */
- /* of its parents. */
- int output_state;
- /* Used when generating the UID file. Possible values: */
- /* sym_k_queued, sym_k_emitted, sym_k_not_processed. (only a byte */
- /* is needed). */
- MrmResource_id resource_id;
- /* The resource id if the object is private. This is used when */
- /* generating the UID file. */
-} sym_widget_entry_type;
-
-#define sym_k_widget_entry_size (sizeof(sym_widget_entry_type))
-
-\f
-
-/*
-** Control entry
-*/
-
-/*
-** Control flags -- These are additional values that may occur in the b_flags
-** field for control entries. NOTE: Must not overlap common flags defined
-** above.
-*/
-
-#define sym_m_def_in_progress (1 << 6)
- /* used in all lists. */
-#define sym_m_managed (1 << 7)
- /* This bit is set when the controlled object is to be managed. */
-#define sym_m_obj_is_reference (1 << 8)
-#define sym_m_forward_ref (1 << 9)
- /* This bit is set if the item is a forward reference not yet resolved*/
-#define sym_m_validated (1 << 10)
- /* Used for widgets to indicate if it has been validated */
-
-
-/* Control node structure. */
-
-typedef struct _sym_control_entry_type
-{
- sym_entry_header_type header;
- /* common entry header */
- sym_obj_header_type obj_header;
- /* common object header */
- sym_widget_entry_type * az_con_obj;
- /* pointer to the widget entry that is controlled by this widget. */
-} sym_control_entry_type;
-
-#define sym_k_control_entry_size (sizeof(sym_control_entry_type))
-
-
-\f
-/*
-** External Definition Entry
-*/
-
-typedef struct _sym_external_def_entry_type
-{
- sym_entry_header_type header;
- /* common header */
- struct _sym_external_def_entry_type *az_next_object;
- /* pointer next external definition entry. */
- sym_name_entry_type *az_name;
- /* pointer to the name entry for the external object. */
-} sym_external_def_entry_type;
-
-#define sym_k_external_def_entry_size (sizeof( sym_external_def_entry_type))
-
-\f
-/*
-** Forward Reference Entry
-*/
-
-typedef struct _sym_forward_ref_entry_type
-{
- sym_entry_header_type header;
- /* common header. The b_type field holds the object type. */
- struct _sym_forward_ref_entry_type *az_next_ref;
- /* pointer to the next forward reference entry. */
- char *a_update_location;
- /* address of the longword field in the referencing entry that */
- /* needs to be updated with the address of the widget entry that */
- /* this forward reference entry was created for. When this forward */
- /* reference entry is processed in UilP2Reslv.c, then the widget */
- /* named in the az_name field will be defined and it can be */
- /* assigned directly into the a_update_location. */
- sym_name_entry_type *az_name;
- /* pointer to the name entry for the widget being referenced before */
- /* it has been defined. */
- sym_widget_entry_type *parent;
- /* pointer to the widget entry of the parent of the forward */
- /* referenced object. */
-} sym_forward_ref_entry_type;
-
-#define sym_k_forward_ref_entry_size (sizeof( sym_forward_ref_entry_type))
-
-\f
-/*
-** Forward Reference Entry
-*/
-
-#define sym_k_patch_add 1
-#define sym_k_bind_value_name 2
-#define sym_k_patch_list_add 3
-
-typedef struct _sym_val_forward_ref_entry_type
-{
- sym_entry_header_type header;
- /* common header. The b_type field holds the expected value type. */
- struct _sym_val_forward_ref_entry_type *az_next_ref;
- /* pointer to the next forward reference entry. */
- char *a_update_location;
- /* address of the longword field in the referencing entry that */
- /* needs to be updated with the address of the value entry that */
- /* this forward reference entry was created for. When this forward */
- /* reference entry is processed in UilP2Reslv.c, then the value */
- /* named in the az_name field will be defined and it can be */
- /* assigned directly into the a_update_location. */
- sym_name_entry_type *az_name;
- /* pointer to the name entry for the value being referenced before */
- /* it has been defined. */
- unsigned char fwd_ref_flags;
- /* flags used to indicate how to process entry on forward reference */
- /* chain. */
-} sym_val_forward_ref_entry_type;
-
-#define sym_k_val_forward_ref_entry_size (sizeof( sym_val_forward_ref_entry_type))
-
-\f
-/*
-** Default object entry. Pointed to from the module entry. The first one in
-** the list contains source information for the "OBJECTS = " text. The 'next'
-** field is a pointer to a list which contains the data on the actual clauses.
-*/
-
-typedef struct _sym_def_obj_entry_type
-{
- sym_entry_header_type header;
- /* common header */
- struct _sym_def_obj_entry_type *next;
- /* pointer to next default object entry in the list. */
- char b_object_info;
- char b_variant_info;
-} sym_def_obj_entry_type;
-
-#define sym_k_def_obj_entry_size (sizeof( sym_def_obj_entry_type))
-
-
-\f
-/*
-** Module entry (only 1 per compilation)
-*/
-
-typedef struct _sym_module_entry_type
-{
- sym_entry_header_type header;
- /* common header */
- sym_obj_header_type obj_header;
- /* common header for objects */
- sym_value_entry_type *az_version;
- /* pointer to the value entry containing version string for the */
- /* module (version clause). */
- sym_value_entry_type *az_character_set;
- /* pointer to the value entry containing the default character set */
- /* information for the module (character set clause). */
- sym_value_entry_type *az_case_sense;
- /* pointer to the value entry containing the value of the module */
- /* case sensitivity clause. */
- sym_def_obj_entry_type *az_def_obj;
- /* pointer to the default object type specified in the module */
- /* default object variant clause. */
-} sym_module_entry_type;
-
-#define sym_k_module_entry_size (sizeof( sym_module_entry_type))
-
-\f
-/*
-** Section entry
-*/
-
-/*
-** Posiblilities for header.b_type when header.b_tag is sym_k_section_entry.
-*/
-
-#define sym_k_list_section 1
- /* list section */
-#define sym_k_procedure_section 2
- /* procedure section */
-#define sym_k_value_section 3
- /* value section */
-#define sym_k_identifier_section 4
- /* identifier section */
-#define sym_k_object_section 5
- /* widget/gadget section */
-#define sym_k_include_section 6
- /* include directive */
-#define sym_k_section_tail 7
- /* This section has no corresponding UIL construct and exists only */
- /* to aid in saving source information */
-
-
-
-typedef struct _sym_section_entry_type
-{
- sym_entry_header_type header;
- /* common header */
- struct _sym_section_entry_type *prev_section;
- /* previous section "LIST". */
- sym_entry_type *next;
- /* pointer to the entry for the next section _OR_ next child. */
- sym_entry_type *entries;
- /* points to entries in the section _OR_ the entry in the symbol */
- /* table for this child. */
-} sym_section_entry_type;
-
-#define sym_k_section_entry_size (sizeof (sym_section_entry_type))
-
-\f
-/*
-** Include file entry
-*/
-
-typedef struct _sym_include_file_entry_type
-{
- sym_entry_header_type header;
- /* common header */
- sym_section_entry_type *sections;
- /* pointer to a section list; this list is all of the sections that */
- /* exist in this include file. */
- char file_name[255];
- /* the file name as specified in the include statement in the UIL */
- /* source. */
- char full_file_name[255];
- /* the expanded name for the include file actually opened. */
-} sym_include_file_entry_type;
-
-#define sym_k_include_file_entry_size (sizeof( sym_include_file_entry_type))
-
-\f
-/*
-** Symbol table root entry (root of symbol table tree)
-*/
-
-typedef struct _sym_root_entry_type
-{
- sym_entry_header_type header;
- /* common header */
- struct _src_source_record_type *src_record_list;
- /* pointer to a list of source records. */
- char file_name[255];
- /* the main UIL file name as specified on the command line. */
- char full_file_name[255];
- /* the expanded name for the main UIL file that was actually */
- /* opened. */
- sym_section_entry_type *sections;
- /* pointer to section list entry. */
- sym_module_entry_type *module_hdr;
- /* pointer to module header entry. */
-
-} sym_root_entry_type;
-
-#define sym_k_root_entry_size (sizeof( sym_root_entry_type))
-
-\f
-/*
-** Color Item Entry
-*/
-
-typedef struct _sym_color_item_entry_type
-{
- sym_entry_header_type header;
- /* common header */
- struct _sym_color_item_entry_type *az_next;
- /* next item */
- unsigned char b_letter;
- /* letter used for color */
- unsigned char b_index;
- /* color table index */
- unsigned char b_spare1;
- sym_value_entry_type *az_color;
- /* name or value entry for the color. */
-
-} sym_color_item_entry_type;
-
-#define sym_k_color_item_entry_size (sizeof( sym_color_item_entry_type))
-
-
-\f
-/*
-** This macro copies the contents of one entry to another without disturbing
-** the the linked list of entries used to connect all symbol table entries.
-*/
-#define _sym_copy_entry(__dest, __src, __size) _move (__dest, __src, __size)
-
-
-#endif /* UilSymDef_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilSymGl.h /main/9 1995/07/14 09:39:03 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file contains external declarations of all
-** global data defining the language accepted by the Uil compiler.
-** This is exactly the global data generated by WML, plus any
-** invariant matching definitions.
-**
-**--
-**/
-
-#ifndef UilSymGl_h
-#define UilSymGl_h
-
-/*
- * Defined in files included in UilData.c
- */
-externalref unsigned char *constraint_tab;
-externalref key_keytable_entry_type *key_table;
-externalref int key_k_keyword_max_length;
-externalref int key_k_keyword_count;
-externalref key_keytable_entry_type *key_table_case_ins;
-externalref unsigned char **allowed_argument_table;
-externalref unsigned char *argument_type_table;
-externalref unsigned char **allowed_child_table;
-externalref unsigned char *child_class_table;
-externalref char **charset_xmstring_names_table;
-externalref unsigned char *charset_writing_direction_table;
-externalref unsigned char *charset_parsing_direction_table;
-externalref unsigned char *charset_character_size_table;
-externalref char **charset_lang_names_table;
-externalref unsigned short int *charset_lang_codes_table;
-externalref unsigned short int charset_lang_table_max;
-externalref unsigned char **allowed_control_table;
-externalref UilEnumSetDescDef *enum_set_table;
-externalref unsigned short int *argument_enumset_table;
-externalref int *enumval_values_table;
-externalref int uil_max_object;
-externalref char **uil_widget_names;
-externalref int uil_max_arg;
-externalref char **uil_argument_names;
-externalref int uil_max_child;
-externalref char **uil_child_names;
-externalref int uil_max_reason;
-externalref char **uil_reason_names;
-externalref int uil_max_enumset;
-externalref int uil_max_enumval;
-externalref char **uil_enumval_names;
-externalref int uil_max_charset;
-externalref char **uil_charset_names;
-externalref unsigned short int *related_argument_table;
-externalref unsigned char **allowed_reason_table;
-externalref char **tok_token_name_table;
-externalref int tok_num_tokens;
-externalref char **uil_widget_funcs;
-externalref unsigned short int *uil_gadget_variants;
-externalref unsigned short int *uil_urm_nondialog_class;
-externalref unsigned short int *uil_urm_subtree_resource;
-externalref char **uil_argument_toolkit_names;
-externalref char **uil_reason_toolkit_names;
-
-externalref unsigned short int uil_sym_user_defined_object;
-externalref unsigned short int uil_sym_default_charset;
-externalref unsigned short int uil_sym_isolatin1_charset;
-
-externalref int uil_max_value;
-externalref char *uil_datatype_names[];
-
-
-#endif /* UilSymGl_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilSymNam.c /main/13 1997/09/08 11:12:50 cshi $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module inserts names into the name table.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include "UilDefI.h"
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine searches for a name entry of the same name as its parameters.
-** If the entry is found, a pointer to that name node is
-** returned as the value of the function. If no entry is found, a NULL
-** pointer is returned.
-**
-** See sym_insert_name for a description of the name lookup alorithm.
-**
-** FORMAL PARAMETERS:
-**
-** l_length length of the name not including the null
-** c_text pointer to a null terminated string for name
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_hash_table the hash table
-**
-** IMPLICIT OUTPUTS:
-**
-** sym_az_hash_table may be updated with an additional name
-**
-** FUNCTION VALUE:
-**
-** a pointer to a name entry
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-sym_name_entry_type
- *sym_find_name(l_length, c_text)
-
-int l_length; /* length of name to find */
-char *c_text; /* text of the name */
-
-{
- sym_name_entry_type *az_current_name;
- int l_hash_code;
- int l_compare_result;
-
- /* obtain the hash code of for the name */
-
- l_hash_code = hash_function( l_length, c_text );
-
- /*
- ** chain along hash chain looking for symbol - exit loop under 3 condition
- ** 1) come to the end of the chain: name not found
- ** 2) find symbol: return this symbol
- ** 3) find node > symbol: name not found
- */
-
- for (az_current_name = sym_az_hash_table[ l_hash_code ];
- az_current_name != NULL;
- az_current_name = az_current_name->az_next_name_entry)
- {
- l_compare_result = _compare(c_text, az_current_name->c_text);
-
- if (l_compare_result == 0) /* c_text = current name */
- {
- /* found the name we are looking for */
-
- return az_current_name;
- }
-
- if (l_compare_result > 0) /* c_text > current name */
- {
- /* return NULL - name should be before this spot in list */
-
- return NULL;
- }
-
- }
-
- /* came to end of the list without finding the name */
-
- return NULL;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine searches for a name entry of the same name as its parameters.
-** If the entry is found, a pointer to that name node is
-** returned as the value of the function. If no entry is found, one is
-** inserted. In this case the value of the function is a pointer to
-** the name entry created.
-**
-** Name entries are linked off of a hash table. Those
-** entries that have the same hash code, are sorted according to the
-** collating sequence. Thus the algorithm involves hashing the symbol and
-** then following the chain for that hash code until one of the following
-** conditions is met. 1) the identifier is found, then return a pointer
-** to that name entry. 2) come to the end of the chain or a name
-** entry that comes later in the collating sequence than the symbol being
-** searched for. In this case the name is inserted just prior to this
-** point in the chain.
-**
-** FORMAL PARAMETERS:
-**
-** l_length length of the name not including the null
-** c_text pointer to a null terminated string for name
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_hash_table the hash table
-**
-** IMPLICIT OUTPUTS:
-**
-** sym_az_hash_table may be updated with an additional name
-**
-** FUNCTION VALUE:
-**
-** a pointer to a name entry
-**
-** SIDE EFFECTS:
-**
-** may create a name entry and update the hash table
-**
-**--
-**/
-
-sym_name_entry_type *sym_insert_name(l_length, c_text)
-
-int l_length; /* length of name to insert */
-char *c_text; /* text of the name */
-
-{
- sym_name_entry_type *az_previous_name;
- sym_name_entry_type *az_current_name;
- sym_name_entry_type *az_new_name;
- int l_hash_code;
- int l_compare_result;
-
- /*
- ** algorithm keeps 2 pointers, one for the previous name and one
- ** for the current name. This permits easy insertion of a new name
- */
-
-
- /* obtain the hash code of for the name */
-
- l_hash_code = hash_function( l_length, c_text );
-
- /*
- ** chain along hash chain looking for symbol - exit loop under 3 condition
- ** 1) come to the end of the chain: insert new node on end
- ** 2) find symbol: return this symbol
- ** 3) find node > symbol: insert new node prior to current node
- */
-
- for (az_current_name = sym_az_hash_table[ l_hash_code ],
- az_previous_name = NULL;
-
- az_current_name != NULL;
-
- az_previous_name = az_current_name,
- az_current_name = az_current_name->az_next_name_entry)
- {
- l_compare_result = _compare(c_text, az_current_name->c_text);
-
- if (l_compare_result == 0) /* c_text = current name */
- {
- /* found the name we are looking for */
-
- return az_current_name;
- }
-
- if (l_compare_result > 0) /* c_text > current name */
- {
- /* exit the loop to insert just prior to current name */
-
- goto insert_name;
- }
-
- }
-
-insert_name:
-
- /*
- ** name is not in the table so it must be inserted between the
- ** az_previous_name and az_current_name entries.
- */
-
- /* allocate and initialize the name entry */
-
- az_new_name = (sym_name_entry_type *)
- sem_allocate_node (sym_k_name_entry,
- sym_k_name_entry_size + l_length + 1);
-
- az_new_name->header.b_type = l_length; /* b_type holds length */
- az_new_name->az_object = NULL;
- az_new_name->az_cycle_id = 0;
-
- _move( az_new_name->c_text, c_text, l_length+1 );
-
- /*
- ** link the name entry into the hash table
- */
-
- az_new_name->az_next_name_entry = az_current_name;
-
- if (az_previous_name == NULL)
- sym_az_hash_table[ l_hash_code ] = az_new_name;
- else
- az_previous_name->az_next_name_entry =
- (sym_name_entry_type *) az_new_name;
-
- return az_new_name;
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure is a hashing function. It takes a length and a
-** pointer to a value. Using this value as a string, the function
-** returns an integer in the range of 0 to sym_k_hash_table_limit-1.
-**
-** FORMAL PARAMETERS:
-**
-** l_length length of the value in bytes not including null
-** c_value a null terminated string
-**
-** IMPLICIT INPUTS:
-**
-** sym_k_hash_table_limit
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** integer (the hash code) in range 0 to sym_k_hash_table_limit-1
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-int hash_function(l_length, c_value)
-
-int l_length;
-char *c_value;
-{
-#ifdef WORD64
-#define _shift 3
- static unsigned int XmConst mask[ 8 ] =
- { 0x00000000000000FF, 0x000000000000FFFF,
- 0x0000000000FFFFFF, 0x00000000FFFFFFFF,
- 0x00000000FFFFFFFF, 0x0000FFFFFFFFFFFF,
- 0x00FFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, };
-#elif defined (LONG64)
- #define _shift 3
- static long XmConst mask[ 8 ] =
- { 0x00000000000000FF, 0x000000000000FFFF,
- 0x0000000000FFFFFF, 0x00000000FFFFFFFF,
- 0x00000000FFFFFFFF, 0x0000FFFFFFFFFFFF,
- 0x00FFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, };
-#else
-#define _shift 2
- static unsigned int XmConst mask[ 4 ] =
- { 0x000000FF, 0x0000FFFF, 0x00FFFFFF, 0xFFFFFFFF };
-#endif
-
-#ifdef LONG64
- long l_hash_code;
- long al_value[20];
-#else
- int l_hash_code;
- int al_value[20];
-#endif
- int l_limit;
- int l_extra;
- int i;
-
- l_limit = (l_length-1) >> _shift; /* divide by wordsize */
- l_extra = (l_length-1) & _slm; /* remainder from divide by wordsize */
-
-#ifdef LONG64
- bzero((char *)al_value, sizeof(long) * 20);
-#else
- bzero((char *)al_value, sizeof(int) * 20);
-#endif
- strncpy((char *)al_value, c_value, l_length);
- l_hash_code = 0;
-
- for (i = 0; i < l_limit; i++)
- {
- l_hash_code = l_hash_code ^ al_value[ i ];
- }
-
- l_hash_code = l_hash_code ^ (al_value[ i ] & mask[ l_extra ]);
-
- return (int)(l_hash_code % sym_k_hash_table_limit);
-}
-
-\f
-#if debug_version
-
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This debugging routine will dump out the name entries linked
-** from the hash table.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_hash_table
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** prints out the hash table
-**
-**--
-**/
-
-void sym_dump_hash_table()
-{
- int i;
- int total_count;
- int max_length;
- int empty_count;
-
- total_count = 0;
- empty_count = 0;
- max_length = 0;
-
- for (i=0; i<sym_k_hash_table_limit; i++)
- {
- int bucket_count;
- sym_name_entry_type *az_name;
-
- bucket_count = 0;
-
- for (az_name = sym_az_hash_table[ i ];
- az_name != NULL;
- az_name = az_name->az_next_name_entry)
- {
- bucket_count++;
-
- _debug_output("\t %s \n", az_name->c_text);
- }
-
- total_count += bucket_count;
- if (bucket_count == 0)
- empty_count++;
- max_length = ( max_length > bucket_count )? max_length : bucket_count;
-
- _debug_output("bucket: %d length: %d\n", i, bucket_count);
- }
-
- _debug_output("name count: %d \n empty count: %d \n max length: %d",
- total_count, empty_count, max_length );
-}
-#endif
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: UilSymStor.c /main/15 1997/03/12 15:21:44 dbl $"
-#endif
-#endif
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This module contains the procedures for managing memory for
-** the compiler.
-**
-**--
-**/
-
-
-/*
-**
-** INCLUDE FILES
-**
-**/
-
-#include <Xm/Xm.h>
-
-#include <ctype.h>
-#include "UilDefI.h"
-
-/*
-**
-** DEFINE and MACRO DEFINITIONS
-**
-**/
-
-
-/*
-**
-** EXTERNAL VARIABLE DECLARATIONS
-**
-**/
-
-
-/*
-**
-** GLOBAL VARIABLE DECLARATIONS
-**
-**/
-
-externaldef(uil_comp_glbl) sym_name_entry_type
- *sym_az_hash_table[ sym_k_hash_table_limit];
-externaldef(uil_comp_glbl) sym_value_entry_type
- *sym_az_error_value_entry = NULL;
-externaldef(uil_comp_glbl) sym_external_def_entry_type
- *sym_az_external_def_chain;
-externaldef(uil_comp_glbl) sym_forward_ref_entry_type
- *sym_az_forward_ref_chain;
-externaldef(uil_comp_glbl) sym_val_forward_ref_entry_type
- *sym_az_val_forward_ref_chain;
-externaldef(uil_comp_glbl) sym_module_entry_type
- *sym_az_module_entry;
-externaldef(uil_comp_glbl) sym_root_entry_type
- *sym_az_root_entry;
-externaldef(uil_comp_glbl) sym_section_entry_type
- *sym_az_current_section_entry;
-externaldef(uil_comp_glbl) sym_entry_type
- *sym_az_entry_list_header;
-
-/*
- * These lists save the allocated and freed symbol table nodes.
- */
-externaldef(uil_comp_glbl) URMPointerListPtr sym_az_allocated_nodes;
-externaldef(uil_comp_glbl) URMPointerListPtr sym_az_freed_nodes;
-
-
-/*
-**
-** OWN VARIABLE DECLARATIONS
-**
-**/
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine intializes the compiler's memory allocation system.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** sym_az_last_location ptr to last byte avail for allocation
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** first symbol table buffer is allocated
-**
-**--
-**/
-
-void
-sym_initialize_storage(void)
-{
-int i;
-
-
-/*
- * Initialize the name hash table
- */
-for (i=0; i<sym_k_hash_table_limit; i++)
- sym_az_hash_table[ i ] = NULL;
-
-/*
- * Set forward reference, external definition, and symbol table header
- * chains to null.
- */
-sym_az_forward_ref_chain = NULL;
-sym_az_val_forward_ref_chain = NULL;
-sym_az_external_def_chain = NULL;
-sym_az_entry_list_header = NULL;
-sym_az_module_entry = NULL;
-
-/*
- * Acquire pointer lists to access allocated and freed nodes
- */
-UrmPlistInit (1000, &sym_az_allocated_nodes);
-UrmPlistInit (100, &sym_az_freed_nodes);
-
-/*
- * Allocate a value entry for an error value and give it a name. Giving it
- * name assures that it is not freed. The name used is one that will not
- * conflict with a user name.
- */
-
-if ( sym_az_error_value_entry == NULL )
- sym_az_error_value_entry = (sym_value_entry_type *)
- sem_allocate_node (sym_k_value_entry, sym_k_value_entry_size);
-
-sym_az_error_value_entry->b_type = sym_k_error_value;
-sym_az_error_value_entry->obj_header.b_flags =
- (sym_m_private | sym_m_builtin);
-
-sym_az_error_value_entry->obj_header.az_name =
- sym_insert_name( 9, "#error...");
-
-}
-
-
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine cleans up the compiler's memory allocation system, and
-** frees all memory used by the symbol table.
-**
-** FORMAL PARAMETERS:
-**
-** freealloc TRUE if allocated nodes are to be freed.
-** Otherwise, free only freed nodes.
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_entry_list_header ptr to list of symbol entries
-**
-** IMPLICIT OUTPUTS:
-**
-** sym_az_entry_list_header ptr to list of symbol entries
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** all symbol table memory is freed.
-**
-**--
-**/
-
-void
-Uil_sym_cleanup_storage (boolean freealloc)
-{
-if ( freealloc )
- if ( sym_az_allocated_nodes != NULL )
- UrmPlistFreeContents (sym_az_allocated_nodes);
-else
- if ( sym_az_freed_nodes != NULL )
- UrmPlistFreeContents (sym_az_freed_nodes);
-if ( sym_az_allocated_nodes != NULL )
- UrmPlistFree (sym_az_allocated_nodes);
-if ( sym_az_freed_nodes != NULL )
- UrmPlistFree (sym_az_freed_nodes);
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine adds an object to the external definition chain.
-**
-** FORMAL PARAMETERS:
-**
-** az_name name of object to be placed on the chain
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_external_def_chain head of the external definition chain
-**
-** IMPLICIT OUTPUTS:
-**
-** sym_az_external_def_chain head of the external definition chain
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void
-sym_make_external_def( XmConst sym_name_entry_type *az_name )
-
-
-{
-
- sym_external_def_entry_type *external_entry;
-
- /* allocate an external definition entry */
-
- external_entry = (sym_external_def_entry_type *)
- sem_allocate_node (sym_k_external_def_entry,
- sym_k_external_def_entry_size);
-
- /* fill in the entry */
-
- external_entry->az_name = (sym_name_entry_type *)az_name;
-
- /* place on the front of the chain */
-
- external_entry->az_next_object = sym_az_external_def_chain;
- sym_az_external_def_chain = external_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine adds a reference to the forward reference chain.
-** This routine is used for widget and gadget forward references only.
-**
-**
-** FORMAL PARAMETERS:
-**
-** az_id_frame parse stack frame for id being referenced
-** l_widget_type type of object being referenced
-** az_object ptr to the location that needs to be updated
-** when the object is resolved
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_forward_ref_chain head of the forward reference chain
-**
-** IMPLICIT OUTPUTS:
-**
-** sym_az_forward_ref_chain head of the forward reference chain
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void
-sym_make_forward_ref(XmConst yystype *az_id_frame,
- XmConst int l_widget_type,
- XmConst char *a_location)
-{
-
- sym_forward_ref_entry_type *fwd_ref_entry;
-
- _assert( (az_id_frame->b_tag == sar_k_token_frame) &&
- (az_id_frame->value.az_symbol_entry->header.b_tag ==
- sym_k_name_entry), "arg1 not an id frame" );
-
- /* allocate an external definition entry */
-
- fwd_ref_entry = (sym_forward_ref_entry_type *)
- sem_allocate_node (sym_k_forward_ref_entry,
- sym_k_forward_ref_entry_size);
-
- /* fill in the entry */
-
- _sar_save_source_pos (&fwd_ref_entry->header, az_id_frame);
-
- fwd_ref_entry->header.b_type = l_widget_type;
- fwd_ref_entry->az_name =
- (sym_name_entry_type *) az_id_frame->value.az_symbol_entry;
- fwd_ref_entry->a_update_location = (char *)a_location;
-
- /* place on the front of the chain */
-
- fwd_ref_entry->az_next_ref = sym_az_forward_ref_chain;
- sym_az_forward_ref_chain = fwd_ref_entry;
-
-}
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This routine adds a reference to the values forward reference chain.
-** This routine is used for value forward references only.
-**
-**
-** FORMAL PARAMETERS:
-**
-** az_id_frame parse stack frame for id being referenced
-** az_object ptr to the location that needs to be updated
-** when the object is resolved
-**
-** IMPLICIT INPUTS:
-**
-** sym_az_val_forward_ref_chain head of the forward reference chain
-**
-** IMPLICIT OUTPUTS:
-**
-** sym_az_val_forward_ref_chain head of the forward reference chain
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void
-sym_make_value_forward_ref (XmConst yystype *az_value_frame,
- XmConst char *a_location,
- XmConst unsigned char fwd_ref_flags )
-
-{
-
- sym_val_forward_ref_entry_type *fwd_ref_entry;
-
- /* allocate an external definition entry */
-
- fwd_ref_entry = (sym_val_forward_ref_entry_type *)
- sem_allocate_node (sym_k_val_forward_ref_entry,
- sym_k_val_forward_ref_entry_size);
-
- /* fill in the entry */
-
- _sar_save_source_pos (&fwd_ref_entry->header, az_value_frame);
-
- switch (fwd_ref_flags)
- {
- case sym_k_patch_add:
- fwd_ref_entry->az_name =
- ((sym_value_entry_type *)
- az_value_frame->value.az_symbol_entry)->obj_header.az_name;
- break;
- case sym_k_patch_list_add:
- fwd_ref_entry->az_name =
- (sym_name_entry_type *)az_value_frame->value.az_symbol_entry;
- break;
- default:
- _assert(FALSE, "Illegal forward reference");
- };
-
- fwd_ref_entry->a_update_location = (char *)a_location;
- fwd_ref_entry->fwd_ref_flags = fwd_ref_flags;
-
- /* place on the front of the chain */
-
- fwd_ref_entry->az_next_ref = sym_az_val_forward_ref_chain;
- sym_az_val_forward_ref_chain = fwd_ref_entry;
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure recursively goes through the symbol table, dumping
-** each node accessible from the root node.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbol table is dump with the debug output
-**
-**--
-**/
-
-void
-UilDumpSymbolTable ( sym_entry_type *node_entry )
-{
-
-sym_value_entry_type *val_node;
-sym_widget_entry_type *widget_node;
-sym_module_entry_type *module_node;
-sym_list_entry_type *list_node;
-sym_obj_entry_type *list_entry;
-sym_root_entry_type *root_node;
-sym_include_file_entry_type *ifile_node;
-sym_section_entry_type *section_node;
-
-
-/*
- * No action on null node. Else dump and processing is based on the kind
- * of the current node.
- */
-if ( node_entry == NULL ) return;
-sym_dump_symbol (node_entry);
-switch ( node_entry->header.b_tag )
- {
- case sym_k_value_entry:
- val_node = (sym_value_entry_type *) node_entry;
- UilDumpSymbolTable ((sym_entry_type *)val_node->az_charset_value);
- UilDumpSymbolTable ((sym_entry_type *)val_node->az_first_table_value);
- UilDumpSymbolTable ((sym_entry_type *)val_node->az_next_table_value);
- UilDumpSymbolTable ((sym_entry_type *)val_node->az_exp_op1);
- UilDumpSymbolTable ((sym_entry_type *)val_node->az_exp_op2);
- break;
- case sym_k_widget_entry:
- case sym_k_gadget_entry:
- case sym_k_child_entry:
- widget_node = (sym_widget_entry_type *) node_entry;
- UilDumpSymbolTable ((sym_entry_type *)widget_node->az_callbacks);
- UilDumpSymbolTable ((sym_entry_type *)widget_node->az_arguments);
- UilDumpSymbolTable ((sym_entry_type *)widget_node->az_controls);
- UilDumpSymbolTable ((sym_entry_type *)widget_node->az_create_proc);
- break;
- case sym_k_module_entry:
- module_node = (sym_module_entry_type *) node_entry;
- UilDumpSymbolTable ((sym_entry_type *)module_node->az_version);
- UilDumpSymbolTable ((sym_entry_type *)module_node->az_character_set);
- UilDumpSymbolTable ((sym_entry_type *)module_node->az_case_sense);
- UilDumpSymbolTable ((sym_entry_type *)module_node->az_def_obj);
- break;
- case sym_k_list_entry:
- /*
- * Sublists (nested lists) are not processed recursively to
- * pick up definitions, since all named lists are picked up
- * in their list sections. We assume no list of interest to
- * us can possibly be encountered only in a nested list reference.
- */
- list_node = (sym_list_entry_type *) node_entry;
- for (list_entry=(sym_obj_entry_type *)
- list_node->obj_header.az_next;
- list_entry!=NULL;
- list_entry=(sym_obj_entry_type *)
- list_entry->obj_header.az_next)
- UilDumpSymbolTable ((sym_entry_type *)list_entry);
- break;
- case sym_k_root_entry:
- root_node = (sym_root_entry_type *) node_entry;
- UilDumpSymbolTable ((sym_entry_type *)root_node->module_hdr);
- UilDumpSymbolTable ((sym_entry_type *)root_node->sections);
- break;
- case sym_k_include_file_entry:
- ifile_node = (sym_include_file_entry_type *) node_entry;
- UilDumpSymbolTable ((sym_entry_type *)ifile_node->sections);
- break;
- case sym_k_section_entry:
- section_node = (sym_section_entry_type *) node_entry;
- switch ( section_node->header.b_type )
- {
- case sym_k_section_tail:
- break;
- default:
- UilDumpSymbolTable ((sym_entry_type *)section_node->next);
- UilDumpSymbolTable ((sym_entry_type *)section_node->entries);
- break;
- }
- break;
- }
-
-}
-
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure dumps the symbol table.
-**
-** FORMAL PARAMETERS:
-**
-** none
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbol table is dump with the debug output
-**
-**--
-**/
-
-void
-sym_dump_symbols( void )
-{
-
-int ndx;
-sym_entry_type *cur_entry;
-
-
-/*
- * Loop over all entries which have been allocated. They are in
- * allocation order (this will include deleted entries).
- */
-_debug_output( "\nSymbol Table Dump: \n\n" );
-for ( ndx=0 ; ndx<UrmPlistNum(sym_az_allocated_nodes) ; ndx++ )
- {
- cur_entry = (sym_entry_type *) UrmPlistPtrN (sym_az_allocated_nodes, ndx);
- sym_dump_symbol (cur_entry);
- }
-_debug_output ("\n\n");
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure dumps a symbol node.
-**
-** FORMAL PARAMETERS:
-**
-** az_symbol_entry symbol node to be dumped
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbol is dumped to the debug output
-**
-**--
-**/
-
-void
-sym_dump_symbol (sym_entry_type *az_symbol_entry)
-{
-
- switch (az_symbol_entry->header.b_tag) {
-
- case sym_k_name_entry:
- sym_dump_name((sym_name_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_module_entry:
- sym_dump_module((sym_module_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_value_entry:
- sym_dump_value((sym_value_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_widget_entry:
- case sym_k_gadget_entry:
- case sym_k_child_entry:
- sym_dump_widget((sym_widget_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_forward_ref_entry:
- sym_dump_forward_ref((sym_forward_ref_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_external_def_entry:
- sym_dump_external_def((sym_external_def_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_proc_def_entry:
- sym_dump_proc_def((sym_proc_def_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_proc_ref_entry:
- sym_dump_proc_ref((sym_proc_ref_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_control_entry:
- sym_dump_control((sym_control_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_argument_entry:
- sym_dump_argument((sym_argument_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_callback_entry:
- sym_dump_callback((sym_callback_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_list_entry:
- sym_dump_list((sym_list_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_color_item_entry:
- sym_dump_color_item((sym_color_item_entry_type *) az_symbol_entry );
- break;
-
- case sym_k_parent_list_entry:
- sym_dump_parent_list_item((sym_parent_list_type *) az_symbol_entry );
- break;
-
- case sym_k_include_file_entry:
- sym_dump_include_file ((sym_include_file_entry_type *)az_symbol_entry);
- break;
-
- case sym_k_section_entry:
- sym_dump_section ((sym_section_entry_type *)az_symbol_entry);
- break;
-
- case sym_k_def_obj_entry:
- sym_dump_object_variant ((sym_def_obj_entry_type *)az_symbol_entry);
- break;
-
- case sym_k_root_entry:
- sym_dump_root_entry ((sym_root_entry_type *)az_symbol_entry);
- break;
-
- default:
- {
- int *l_array;
- int i;
-
- _debug_output("%x unknown type: %d size: %d byte: %x\n",
- az_symbol_entry,
- az_symbol_entry->header.b_tag,
- az_symbol_entry->header.w_node_size,
- az_symbol_entry->header.b_type );
-
- l_array = (int *) az_symbol_entry->b_value;
-
- for (i=0; i<(int)(az_symbol_entry->header.w_node_size-1); i++)
- _debug_output( "\t%x", l_array[ i ] );
-
- _debug_output("\n");
- break;
- }
- }
-
- sym_dump_source_info(( sym_entry_header_type *)az_symbol_entry);
- _debug_output("\n");
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps an object entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_widget_entry pointer to the object
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the object appears as part of the
-** debug output
-**
-**--
-**/
-
-void
-sym_dump_widget( XmConst sym_widget_entry_type *az_widget_entry )
-{
-
- sym_dump_obj_header ((sym_obj_entry_type *)az_widget_entry);
-
- _debug_output (
- " %s %s controls: %x callbacks: %x arguments: %x parent_list: %x\n",
- diag_object_text( az_widget_entry->header.b_type),
- diag_tag_text( az_widget_entry->header.b_tag ),
- az_widget_entry->az_controls,
- az_widget_entry->az_callbacks,
- az_widget_entry->az_arguments,
- az_widget_entry->parent_list);
-
- if (az_widget_entry->az_create_proc != NULL) {
- _debug_output (" create proc: %x\n",
- az_widget_entry->az_create_proc);
- }
- /* preserve comments */
- _debug_output ("\n Comment: %s\n", az_widget_entry->obj_header.az_comment);
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps an argument entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_argument_entry pointer to the argument
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the name appears as part of the
-** debug output
-**
-**--
-**/
-
-void
-sym_dump_argument( XmConst sym_argument_entry_type *az_argument_entry )
-{
-
- sym_dump_obj_header ((sym_obj_entry_type *)az_argument_entry);
-
- _debug_output ( " arg name: %x arg value: %x\n",
- az_argument_entry->az_arg_name,
- az_argument_entry->az_arg_value );
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps a control entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_control_entry pointer to the control
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the name appears as part of the
-** debug output
-**
-**--
-**/
-
-void
-sym_dump_control( XmConst sym_control_entry_type *az_control_entry )
-{
-
- sym_dump_obj_header ((sym_obj_entry_type *)az_control_entry);
-
-/* These are for control objects only. */
-
- if (az_control_entry->obj_header.b_flags & sym_m_def_in_progress) {
- _debug_output (" def in progress");
- }
-
- if (az_control_entry->obj_header.b_flags & sym_m_managed) {
- _debug_output (" managed");
- } else {
- _debug_output (" unmanaged");
- }
-
- _debug_output ( " obj: %x\n",
- az_control_entry->az_con_obj );
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps a callback entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_callback_entry pointer to the callback
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the name appears as part of the
-** debug output
-**
-**--
-**/
-
-void
-sym_dump_callback( XmConst sym_callback_entry_type *az_callback_entry )
-{
-
- sym_dump_obj_header ((sym_obj_entry_type *)az_callback_entry);
-
- _debug_output ( " reason name: %x proc ref: %x proc ref list: %x\n",
- az_callback_entry->az_call_reason_name,
- az_callback_entry->az_call_proc_ref,
- az_callback_entry->az_call_proc_ref_list );
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps a list entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_list_entry pointer to the list
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the name appears as part of the
-** debug output
-**
-**--
-**/
-
-void
-sym_dump_list( XmConst sym_list_entry_type *az_list_entry )
-{
-
- sym_dump_obj_header ((sym_obj_entry_type *)az_list_entry);
-
- _debug_output ( " type: %s count: %d gadget count: %d\n",
- diag_tag_text( az_list_entry->header.b_type),
- az_list_entry->w_count,
- az_list_entry->w_gadget_count );
-
- /* preserve comments */
- _debug_output ("\n Comment: %s\n", az_list_entry->obj_header.az_comment);
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps a name entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_name_entry pointer to the name
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the name appears as part of the
-** debug output
-**
-**--
-**/
-
-void
-sym_dump_name( XmConst sym_name_entry_type *az_name_entry )
-{
-
- _debug_output
- ( "%x name size: %d next name: %x object: %x",
- az_name_entry,
- az_name_entry->header.w_node_size,
- az_name_entry->az_next_name_entry,
- az_name_entry->az_object );
-
- if (az_name_entry->b_flags & sym_m_referenced) {
- _debug_output (" referenced");
- }
-
- _debug_output
- ( " name: %s \n", az_name_entry->c_text );
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps a module entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_module_entry pointer to the module
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the module appears as part of the
-** debug output
-**
-**--
-**/
-
-void
-sym_dump_module( XmConst sym_module_entry_type *az_module_entry )
-{
-
- _debug_output
- ( "%x module size: %d name: %x version: %x \n",
- az_module_entry,
- az_module_entry->header.w_node_size,
- az_module_entry->obj_header.az_name,
- az_module_entry->az_version );
-
- /* preserve comments */
- _debug_output ("\n Comment: %s\n", az_module_entry->obj_header.az_comment);
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps a color item entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_color_item_entry pointer to the color_item
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the color item appears as part of the
-** debug output
-**
-**--
-**/
-
-void
-sym_dump_color_item( XmConst sym_color_item_entry_type *az_color_item_entry )
-{
-
- _debug_output
- ( "%x color_item size: %d letter: %c index: %d color: %x next: %x\n",
- az_color_item_entry,
- az_color_item_entry->header.w_node_size,
- az_color_item_entry->b_letter,
- az_color_item_entry->b_index,
- az_color_item_entry->az_color,
- az_color_item_entry->az_next );
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps a parent_list entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_parent_list_item pointer to the parent list entry
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** none
-**
-**--
-**/
-
-void
-sym_dump_parent_list_item ( XmConst sym_parent_list_type *az_parent_list_item )
-{
- _debug_output
- ( "%x parent_list size: %d parent: %x next: %x \n",
- az_parent_list_item,
- az_parent_list_item->header.w_node_size,
- az_parent_list_item->parent,
- az_parent_list_item->next);
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps an external definition entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_external_def_entry pointer to the external definition
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the name appears as part of the
-** debug output
-**
-**--
-**/
-
-void
-sym_dump_external_def(
- XmConst sym_external_def_entry_type *az_external_def_entry)
-{
-
- _debug_output
- ( "%x external def size: %d next external: %x object: %x \n",
- az_external_def_entry,
- az_external_def_entry->header.w_node_size,
- az_external_def_entry->az_next_object,
- az_external_def_entry->az_name );
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps a procedure definition entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_proc_def_entry pointer to the procedure definition
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the procedure definition appears as
-** part of the debug output
-**
-**--
-**/
-
-void
-sym_dump_proc_def( XmConst sym_proc_def_entry_type *az_proc_def_entry )
-{
-
- char *private_flag;
- char *imported_flag;
- char *exported_flag;
- char *checking_flag;
-
- private_flag = "";
- imported_flag = "";
- exported_flag = "";
- checking_flag = " no-check";
-
- if (az_proc_def_entry->v_arg_checking)
- checking_flag = " check";
- if (az_proc_def_entry->obj_header.b_flags & sym_m_private)
- private_flag = " private";
- if (az_proc_def_entry->obj_header.b_flags & sym_m_exported)
- exported_flag = " exported";
- if (az_proc_def_entry->obj_header.b_flags & sym_m_imported)
- imported_flag = " imported";
-
- _debug_output
- ( "%x proc def size: %d name: %x %s%s%s%s count: %d %s\n",
- az_proc_def_entry,
- az_proc_def_entry->header.w_node_size,
- az_proc_def_entry->obj_header.az_name,
- checking_flag,
- private_flag,
- exported_flag,
- imported_flag,
- az_proc_def_entry->b_arg_count,
- diag_value_text( az_proc_def_entry->b_arg_type ) );
-
- /* preserve comments */
- _debug_output ("\nComment: %s\n",az_proc_def_entry->obj_header.az_comment);
-
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps a procedure reference entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_proc_ref_entry pointer to the procedure reference entry
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the procedure reference appears as
-** part of the debug output
-**
-**--
-**/
-
-void
-sym_dump_proc_ref( XmConst sym_proc_ref_entry_type *az_proc_ref_entry )
-{
-
- sym_dump_obj_header ((sym_obj_entry_type *)az_proc_ref_entry);
-
- _debug_output
- ( "%x proc ref size: %d proc def: %x value: %x\n",
- az_proc_ref_entry,
- az_proc_ref_entry->header.w_node_size,
- az_proc_ref_entry->az_proc_def,
- az_proc_ref_entry->az_arg_value );
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps an forward reference entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_forward_ref_entry pointer to the forward reference
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the name appears as part of the
-** debug output
-**
-**--
-**/
-
-void
-sym_dump_forward_ref(XmConst sym_forward_ref_entry_type *az_forward_ref_entry)
-{
-
- _debug_output
- ( "%x forward ref size: %d next ref: %x location: %x %s parent: %x\n",
- az_forward_ref_entry,
- az_forward_ref_entry->header.w_node_size,
- az_forward_ref_entry->az_next_ref,
- az_forward_ref_entry->a_update_location,
- diag_object_text( az_forward_ref_entry->header.b_type ),
- az_forward_ref_entry->parent );
-
- _debug_output
- ( " name: %x %s\n",
- az_forward_ref_entry->az_name,
- az_forward_ref_entry->az_name->c_text );
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function dumps a value entry in the symbol table
-**
-** FORMAL PARAMETERS:
-**
-** az_value_entry pointer to the value
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** symbolic representation of the value appears as part of the
-** debug output
-**
-**--
-**/
-
-void
-sym_dump_value( XmConst sym_value_entry_type *az_value_entry )
-{
-
- char *private_flag;
- char *imported_flag;
- char *exported_flag;
- char *builtin_flag;
- char *special_type, *table_type;
-
- private_flag = "";
- imported_flag = "";
- exported_flag = "";
- builtin_flag = "";
-
- if (az_value_entry->obj_header.b_flags & sym_m_builtin)
- builtin_flag = " builtin";
- if (az_value_entry->obj_header.b_flags & sym_m_private)
- private_flag = " private";
- if (az_value_entry->obj_header.b_flags & sym_m_exported)
- exported_flag = " exported";
- if (az_value_entry->obj_header.b_flags & sym_m_imported)
- imported_flag = " imported";
-
- _debug_output
- ( "%x value size: %d name: %x %s%s%s%s",
- az_value_entry,
- az_value_entry->header.w_node_size,
- az_value_entry->obj_header.az_name,
- builtin_flag, private_flag, exported_flag, imported_flag );
-
- if (az_value_entry->obj_header.b_flags & sym_m_imported)
- {
- _debug_output( " %s \n", diag_value_text( az_value_entry->b_type ));
- return;
- }
-
- switch (az_value_entry->b_type)
- {
- case sym_k_integer_value:
- case sym_k_horizontal_integer_value:
- case sym_k_vertical_integer_value:
- _debug_output(" integer: %d \n",
- az_value_entry->value.l_integer );
- break;
-
- case sym_k_bool_value:
- _debug_output(" boolean: %d \n",
- az_value_entry->value.l_integer );
- break;
-
- case sym_k_float_value:
- case sym_k_horizontal_float_value:
- case sym_k_vertical_float_value:
- _debug_output(" double: %g \n",
- az_value_entry->value.d_real);
- break;
-
- case sym_k_color_value:
- {
- char *ptr;
-
- switch (az_value_entry->b_arg_type)
- {
- case sym_k_background_color:
- ptr = "background";
- break;
- case sym_k_foreground_color:
- ptr = "foreground";
- break;
- case sym_k_unspecified_color:
- ptr = "unspecified";
- break;
- default:
- ptr = "illegal";
- }
-
- _debug_output(" color type: %s", ptr );
-
- output_text( az_value_entry->w_length,
- az_value_entry->value.c_value);
-
- break;
- }
-
- case sym_k_reason_value:
- special_type = "reason";
- goto common_special_type;
-
- case sym_k_argument_value:
- special_type = "argument";
-
-common_special_type:
-
- _debug_output(" %s", special_type );
-
- if (az_value_entry->obj_header.b_flags & sym_m_builtin)
- _debug_output(" code: %d \n", az_value_entry->value.l_integer );
- else
- output_text( az_value_entry->w_length,
- az_value_entry->value.c_value);
-
- break;
-
- case sym_k_compound_string_value:
- _debug_output(" compound string\n first component: %x\n",
- az_value_entry->az_first_table_value );
-
- if ( (az_value_entry->b_aux_flags & sym_m_table_entry) != 0 ) {
- _debug_output(" next table entry: %x",
- az_value_entry->az_next_table_value);
- }
-
- break;
-
-
- case sym_k_font_value:
- case sym_k_fontset_value:
- if (az_value_entry->b_charset != sym_k_userdefined_charset)
- _debug_output(" font charset: %s",
- diag_charset_text( az_value_entry->b_charset ) );
- else
- _debug_output(" font charset: userdefined(%x)",
- diag_charset_text( (long)az_value_entry->az_charset_value ) );
-
- goto check_for_table_value;
-
-
- case sym_k_char_8_value:
- case sym_k_localized_string_value:
- if (az_value_entry->b_charset != sym_k_userdefined_charset)
- switch ( az_value_entry->b_direction )
- {
- case XmSTRING_DIRECTION_L_TO_R:
- _debug_output
- (" string length: %d\n charset: %s L_TO_R",
- az_value_entry->w_length,
- diag_charset_text(
- az_value_entry->b_charset ));
- break;
- case XmSTRING_DIRECTION_R_TO_L:
- _debug_output
- (" string length: %d\n charset: %s R_TO_L",
- az_value_entry->w_length,
- diag_charset_text(
- az_value_entry->b_charset ));
- break;
- }
- else
- switch ( az_value_entry->b_direction )
- {
- case XmSTRING_DIRECTION_L_TO_R:
- _debug_output
- (" string length: %d\n charset: userdefined(%x) L_TO_R",
- az_value_entry->w_length,
- az_value_entry->az_charset_value);
- break;
- case XmSTRING_DIRECTION_R_TO_L:
- _debug_output
- (" string length: %d\n charset: userdefined(%x) R_TO_L",
- az_value_entry->w_length,
- az_value_entry->az_charset_value);
- break;
- }
-
-/* See if this is an entry in a table. */
-check_for_table_value:
-
- if ( (az_value_entry->b_aux_flags & sym_m_table_entry) != 0 ) {
- _debug_output(" next table entry: %x",
- az_value_entry->az_next_table_value);
- }
-
- output_text
- ( az_value_entry->w_length, az_value_entry->value.c_value );
-
- break;
-
- case sym_k_identifier_value:
- _debug_output(" identifier: %s", az_value_entry->value.c_value );
-
- break;
-
- case sym_k_icon_value:
- _debug_output(" icon width: %d height: %d colors: %x rows: %x \n",
- az_value_entry->value.z_icon->w_width,
- az_value_entry->value.z_icon->w_height,
- az_value_entry->value.z_icon->az_color_table,
- az_value_entry->value.z_icon->az_rows );
-
- break;
-
- case sym_k_string_table_value:
- table_type = "string table";
- goto common_table;
-
- case sym_k_font_table_value:
- table_type = "font table";
- goto common_table;
-
- case sym_k_trans_table_value:
- table_type = "translation table";
-
-common_table:
-
- _debug_output(" %s first table entry: %x\n",
- table_type, az_value_entry->az_first_table_value);
-
- break;
-
- case sym_k_color_table_value:
- {
- int index;
-
- _debug_output(" color_table count: %d max_index: %d \n",
- az_value_entry->b_table_count,
- az_value_entry->b_max_index );
-
- for (index = 0; index < (int)az_value_entry->b_table_count; index++)
- {
-
- _debug_output( " letter: %c index: %d color: %x\n",
- az_value_entry->value.z_color[index].b_letter,
- az_value_entry->value.z_color[index].b_index,
- az_value_entry->value.z_color[index].az_color );
- }
-
- break;
- }
-
- case sym_k_error_value:
- _debug_output(" error \n");
-
- break;
-
- default:
- _debug_output(" unknown type: %d \n", az_value_entry->b_type );
- }
-
- /* preserve comments */
- _debug_output ("\nComment: %s\n",az_value_entry->obj_header.az_comment);
-
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This function will output an arbitrarily long amount of text
-** with the debug output.
-**
-** FORMAL PARAMETERS:
-**
-** length length of the text
-** text pointer to the text
-**
-** IMPLICIT INPUTS:
-**
-** none
-**
-** IMPLICIT OUTPUTS:
-**
-** none
-**
-** FUNCTION VALUE:
-**
-** void
-**
-** SIDE EFFECTS:
-**
-** text is placed in the debug output
-**
-**--
-**/
-
-void
-output_text(XmConst int length, XmConst char *text)
-{
-
- char c_buffer[ 71 ];
- XmConst char *c_ptr;
- int l_length;
-
- l_length = length;
-
- _debug_output( "\n" );
-
- for (c_ptr = text;
-
- l_length > 0;
-
- l_length -= 70,
- c_ptr += 70)
- {
- int last;
- int i;
-
- last = ( l_length > 70)? 70: l_length;
-
- _move( c_buffer, c_ptr, last );
-
- for (i=0; i<last; i++)
- {
- if (iscntrl( c_buffer[ i ] ))
- c_buffer[ i ] = '.';
- }
-
- c_buffer[ last ] = 0;
- _debug_output( " \"%s\"\n", c_buffer );
- }
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure dumps the source information in the header of symbol
-** entries.
-**
-** FORMAL PARAMETERS:
-**
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-**
-** SIDE EFFECTS:
-**
-**
-**--
-**/
-void
-sym_dump_source_info (sym_entry_header_type *hdr)
-{
- src_source_record_type *src_rec;
-
- src_rec = hdr->az_src_rec;
-
- if (src_rec != NULL)
- _debug_output (" Source position: file %d, line %d, columns %d through %d\n",
- src_rec->b_file_number,
- src_rec->w_line_number,
- hdr->b_src_pos,
- hdr->b_end_pos);
- else
- _debug_output (" Src source record not present.\n");
-
-}
-
-\f
-/*
-**++
-** FUNCTIONAL DESCRIPTION:
-**
-** This procedure dumps the common header of "object" entries.
-**
-** FORMAL PARAMETERS:
-**
-**
-** IMPLICIT INPUTS:
-**
-**
-** IMPLICIT OUTPUTS:
-**
-**
-** SIDE EFFECTS:
-**
-**
-**--
-**/
-
-void
-sym_dump_obj_header (XmConst sym_obj_entry_type *az_obj_entry)
-{
-
- _debug_output
- ( "%x %s size: %d \n",
- az_obj_entry,
- diag_tag_text (az_obj_entry->header.b_tag),
- az_obj_entry->header.w_node_size);
-
- if (az_obj_entry->obj_header.az_name != NULL) {
- _debug_output (" name: %x", az_obj_entry->obj_header.az_name);
- }
-
- if (az_obj_entry->obj_header.az_reference != NULL) {
- _debug_output (" reference: %x",
- az_obj_entry->obj_header.az_reference);
- }
-
- if (az_obj_entry->obj_header.az_next != NULL) {
- _debug_output (" next: %x", az_obj_entry->obj_header.az_next);
- }
-
- if (az_obj_entry->obj_header.b_flags & sym_m_private) {
- _debug_output (" private");
- }
-
- if (az_obj_entry->obj_header.b_flags & sym_m_exported) {
- _debug_output (" exported");
- }
-
- if (az_obj_entry->obj_header.b_flags & sym_m_imported) {
- _debug_output (" imported");
- }
-
- _debug_output ("\n");
-}
-
-
-\f
-void
-sym_dump_include_file ( sym_include_file_entry_type *az_symbol_entry )
-{
-
- _debug_output ("%x include file file name: %s full file name: %s\n",
- az_symbol_entry,
- az_symbol_entry->file_name, az_symbol_entry->full_file_name);
-
-}
-
-
-\f
-void
-sym_dump_section ( sym_section_entry_type *az_symbol_entry )
-{
- _debug_output ("%x %s section prev section : %x next section: %x entries: %x\n",
- az_symbol_entry,
- sym_section_text(az_symbol_entry->header.b_type),
- az_symbol_entry->prev_section, az_symbol_entry->next,
- az_symbol_entry->entries);
-
-}
-
-
-\f
-void
-sym_dump_object_variant ( sym_def_obj_entry_type * az_symbol_entry )
-{
- _debug_output ("%x default obj var next: %x object info: %d, variant_info: %d\n",
- az_symbol_entry,
- az_symbol_entry->next, az_symbol_entry->b_object_info,
- az_symbol_entry->b_variant_info);
-}
-
-
-\f
-void
-sym_dump_root_entry ( sym_root_entry_type *az_symbol_entry )
-{
- _debug_output ( "%x root tag: %d module: %x sections: %x\n module tail: ",
- az_symbol_entry,
- az_symbol_entry->header.b_tag,
- az_symbol_entry->module_hdr,
- az_symbol_entry->sections);
-}
-
-
-\f
-char *
-sym_section_text (int b_type)
-{
- switch (b_type)
- {
- case 0:
- return "";
- case sym_k_list_section:
- return "list";
- case sym_k_procedure_section:
- return "procedure";
- case sym_k_value_section:
- return "value";
- case sym_k_identifier_section:
- return "identifier";
- case sym_k_object_section:
- return "object";
- case sym_k_include_section:
- return "include";
- case sym_k_section_tail:
- return "tail";
- default:
- return "*unknown*";
- }
-}
-
-
-
+++ /dev/null
-!
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-!
-! HISTORY
-!
-! $XConsortium: XmAppl.uil /main/11 1995/07/14 09:39:39 drk $
-! (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
-!******************************************************************************
-!++
-! FACILITY:
-!
-! UIL -- Include file for Xm constant definitions.
-!
-! ABSTRACT:
-!
-! This include file contains UIL value definintions corresponding
-! to those defined in Xm.h
-!
-!--
-
-/* Version information */
-value XmVERSION : 2;
-value XmREVISION : 0;
-value XmVersion : (XmVERSION * 1000 + XmREVISION);
-
-
-/* XmString definitions */
-
-value XmSTRING_DIRECTION_REVERT : 2;
-value XmSTRING_COMPONENT_UNKNOWN : 0;
-value XmSTRING_COMPONENT_CHARSET : 1;
-value XmSTRING_COMPONENT_TEXT : 2;
-value XmSTRING_COMPONENT_DIRECTION : 3;
-value XmSTRING_COMPONENT_SEPARATOR : 4; /* 5-125 reserved */
-
-value XmSTRING_COMPONENT_END : 126; /* no more comp in string */
-
-value XmSTRING_COMPOUND_STRING : 127; /* tag for whole TCS */
-
-value XmSTRING_COMPONENT_USER_BEGIN : 128; /* 128-255 are user tags */
-value XmSTRING_COMPONENT_USER_END : 255;
-
-
-/* Callback reasons */
-
-value XmCR_NONE : 0;
-value XmCR_HELP : 1;
-value XmCR_VALUE_CHANGED : 2;
-value XmCR_INCREMENT : 3;
-value XmCR_DECREMENT : 4;
-value XmCR_PAGE_INCREMENT : 5;
-value XmCR_PAGE_DECREMENT : 6;
-value XmCR_TO_TOP : 7;
-value XmCR_TO_BOTTOM : 8;
-value XmCR_DRAG : 9;
-value XmCR_ACTIVATE : 10;
-value XmCR_ARM : 11;
-value XmCR_DISARM : 12;
-value XmCR_MAP : 16;
-value XmCR_UNMAP : 17;
-value XmCR_FOCUS : 18;
-value XmCR_LOSING_FOCUS : 19;
-value XmCR_MODIFYING_TEXT_VALUE : 20;
-value XmCR_MOVING_INSERT_CURSOR : 21;
-value XmCR_EXECUTE : 22;
-value XmCR_SINGLE_SELECT : 23;
-value XmCR_MULTIPLE_SELECT : 24;
-value XmCR_EXTENDED_SELECT : 25;
-value XmCR_BROWSE_SELECT : 26;
-value XmCR_DEFAULT_ACTION : 27;
-value XmCR_CLIPBOARD_DATA_REQUEST : 28;
-value XmCR_CLIPBOARD_DATA_DELETE : 29;
-value XmCR_CASCADING : 30;
-value XmCR_OK : 31;
-value XmCR_ENTER : 31;
-value XmCR_CANCEL : 32;
-value XmCR_APPLY : 34;
-value XmCR_NO_MATCH : 35;
-value XmCR_COMMAND_ENTERED : 36;
-value XmCR_COMMAND_CHANGED : 37;
-value XmCR_EXPOSE : 38;
-value XmCR_RESIZE : 39;
-value XmCR_INPUT : 40;
+++ /dev/null
-/* $TOG: libUil.elist /main/4 1999/10/15 12:00:56 mgreess $ */
-
-/*************************************************************************
- * Export list for libUil
- * This list *must* be updated whenever a change is made to the libUil API.
- *
- * The syntax for the symbol declarations in this list is as follows:
- * public sym => Public C symbol, i.e., publicized API
- * private sym => Private C symbol, i.e., unpublicized API
- * internal sym => Internal C symbol, i.e., not part of API
- *
- **************************************************************************/
-
-
-/**************************************************************************
- * libUil public symbols -- available to developers
- **************************************************************************/
-
-public Uil
-public UilDumpSymbolTable
-
-public allowed_argument_table
-public allowed_child_table
-public allowed_control_table
-public allowed_reason_table
-public argument_enumset_table
-public argument_type_table
-public charset_character_size_table
-public charset_lang_codes_table
-public charset_lang_names_table
-public charset_lang_table_max
-public charset_parsing_direction_table
-public charset_writing_direction_table
-public charset_xmstring_names_table
-public child_class_table
-public constraint_tab
-public enum_set_table
-public enumval_values_table
-public key_k_keyword_count
-public key_k_keyword_max_length
-public key_table
-public key_table_case_ins
-public related_argument_table
-public tok_num_tokens
-public tok_token_name_table
-public uil_argument_names
-public uil_argument_toolkit_names
-public uil_charset_names
-public uil_child_names
-public uil_datatype_names
-public uil_enumval_names
-public uil_gadget_variants
-public uil_max_arg
-public uil_max_charset
-public uil_max_child
-public uil_max_enumset
-public uil_max_enumval
-public uil_max_object
-public uil_max_reason
-public uil_max_value
-public uil_reason_names
-public uil_reason_toolkit_names
-public uil_sym_default_charset
-public uil_sym_isolatin1_charset
-public uil_sym_user_defined_object
-public uil_urm_nondialog_class
-public uil_urm_subtree_resource
-public uil_widget_funcs
-public uil_widget_names
-
-
-/********************************************************************
- * libUil private symbols -- Undocumented APIs that are exported
- * for backward compatibilty.
- ********************************************************************/
-
-
-/********************************************************************
- * libUil internal symbols -- not to be used outside the library.
- ********************************************************************/
-
-internal Uil_characters_read
-internal Uil_cmd_z_command
-internal Uil_compile_desc_ptr
-internal Uil_current_file
-#if !defined(__hpux)
-internal Uil_file_size
-#endif
-internal Uil_lex_az_charset_entry
-internal Uil_lex_az_literal_charset
-internal Uil_lex_cleanup_analyzer
-internal Uil_lex_l_charset_specified
-internal Uil_lex_l_literal_charset
-internal Uil_lex_l_localized
-internal Uil_lex_l_user_default_charset
-internal Uil_lines_processed
-internal Uil_lst_c_title2
-internal Uil_lst_cleanup_listing
-internal Uil_message_count
-internal Uil_percent_complete
-internal Uil_src_cleanup_source
-internal Uil_sym_cleanup_storage
-internal Urm_code_from_uil_type
-internal access_from_code
-internal class_name_from_code
-internal close_source_file
-internal cmd_decode_command_line
-internal comment_size
-internal comment_text
-internal compute_color_table_size
-internal compute_icon_size
-internal compute_list_size
-internal count_proc
-internal create_color_table
-internal create_ext_compression_codes
-internal create_icon
-internal create_int_compression_codes
-internal create_listing_file
-internal create_str_entry
-internal current_time
-internal cvt_ascii_to_long
-internal db_incorporate
-internal db_open_file
-internal db_read_char_table
-internal db_read_int_and_shorts
-internal db_read_ints_and_string
-internal db_read_length_and_string
-internal diag_charset_text
-internal diag_get_message_abbrev
-internal diag_handler
-internal diag_initialize_diagnostics
-internal diag_issue_diagnostic
-internal diag_issue_internal_error
-internal diag_issue_summary
-internal diag_object_text
-internal diag_report_status
-internal diag_reset_overflow_handler
-internal diag_restore_diagnostics
-internal diag_rz_msg_table
-internal diag_store_handlers
-internal diag_tag_text
-internal diag_value_text
-internal emit_argument
-internal emit_callback
-internal emit_callback_procedures
-internal emit_control
-internal extract_create_callback
-internal extract_subtree_control
-internal format_arg_value
-internal get_line
-internal get_root_dir_name
-internal group_from_code
-internal gz_yynullval
-internal hash_function
-internal init_wmd_path
-internal issue_control_char_diagnostic
-internal issue_urm_error
-internal key_find_keyword
-internal key_initialize
-internal lex_filter_unprintable_chars
-internal lex_initialize_analyzer
-internal lex_issue_error
-internal lst_debug_output
-internal lst_open_listing
-internal lst_output_line
-internal lst_output_listing
-internal lst_output_machine_code
-internal lst_output_message_ptr_line
-internal lst_output_messages
-internal module_clauses
-internal msg0
-internal msg1
-internal msg10
-internal msg11
-internal msg12
-internal msg13
-internal msg14
-internal msg15
-internal msg16
-internal msg17
-internal msg18
-internal msg19
-internal msg2
-internal msg20
-internal msg21
-internal msg22
-internal msg23
-internal msg24
-internal msg25
-internal msg26
-internal msg27
-internal msg28
-internal msg29
-internal msg3
-internal msg30
-internal msg31
-internal msg32
-internal msg33
-internal msg34
-internal msg35
-internal msg36
-internal msg37
-internal msg38
-internal msg39
-internal msg4
-internal msg40
-internal msg41
-internal msg42
-internal msg43
-internal msg44
-internal msg45
-internal msg46
-internal msg47
-internal msg48
-internal msg49
-internal msg5
-internal msg50
-internal msg51
-internal msg52
-internal msg53
-internal msg54
-internal msg55
-internal msg56
-internal msg57
-internal msg58
-internal msg59
-internal msg6
-internal msg60
-internal msg61
-internal msg62
-internal msg63
-internal msg64
-internal msg65
-internal msg66
-internal msg67
-internal msg68
-internal msg69
-internal msg7
-internal msg70
-internal msg71
-internal msg72
-internal msg73
-internal msg74
-internal msg75
-internal msg76
-internal msg77
-internal msg78
-internal msg79
-internal msg8
-internal msg80
-internal msg9
-internal msg_cat_table
-internal off_get
-internal off_put
-internal open_source_file
-internal out_az_idbfile_id
-internal out_emit_value
-internal out_emit_widget
-internal output_text
-internal parent_list_traverse
-internal pop
-#if !defined(__hpux)
-internal prev_yylval
-#endif
-internal process_all_arguments
-internal process_all_callbacks
-internal process_all_controls
-internal push
-internal ref_control
-internal ref_value
-internal reget_line
-internal resource_name_from_code
-internal sar_add_forward_list_entry
-internal sar_add_list_entry
-internal sar_append_color_item
-internal sar_append_table_value
-internal sar_assoc_comment
-internal sar_binary_op
-internal sar_bind_value_name
-internal sar_cat_value
-internal sar_cat_value_entry
-internal sar_charset_verify
-internal sar_chk_charset_attr
-internal sar_chk_comp_str_attr
-internal sar_create_child
-internal sar_create_identifier
-internal sar_create_module
-internal sar_create_object
-internal sar_create_procedure
-internal sar_create_root
-internal sar_get_units_type
-internal sar_import_value_entry
-internal sar_include_file
-internal sar_initialize
-internal sar_link_section
-internal sar_make_charset
-internal sar_make_color
-internal sar_make_color_item
-internal sar_make_color_table
-internal sar_make_comp_str
-internal sar_make_comp_str_comp
-internal sar_make_def_obj
-internal sar_make_fallback_charset
-internal sar_make_font
-internal sar_make_font_item
-internal sar_make_font_table
-internal sar_make_fontset
-internal sar_make_icon
-internal sar_make_private_value
-internal sar_make_rgb_private_value
-internal sar_make_wchar_str
-internal sar_map_keyword_to_name
-internal sar_object_reference
-internal sar_private_error
-internal sar_process_id
-internal sar_process_id_ref
-internal sar_process_module_charset
-internal sar_process_module_sensitivity
-internal sar_process_module_variant
-internal sar_process_module_version
-internal sar_process_proc_ref
-internal sar_save_argument_pair
-internal sar_save_control_item
-internal sar_save_control_widget
-internal sar_save_feature
-internal sar_save_list_end
-internal sar_save_module_source
-internal sar_save_reason_binding
-internal sar_save_section_source
-internal sar_save_src_entry_end
-internal sar_save_src_semicolon_pos
-internal sar_save_user_proc_ref_src
-internal sar_set_list_type
-internal sar_set_object_class
-internal sar_set_object_flags
-internal sar_set_object_variant
-internal sar_unary_op
-internal sar_unset_object_flags
-internal sar_update_parent_list
-internal sar_value_not_implemented
-internal sar_value_type_error
-internal sar_verify_object
-internal save_module_machine_code
-internal save_value_machine_code
-internal save_widget_machine_code
-internal sem_allocate_node
-internal sem_append_cstr_to_cstr
-internal sem_append_str_to_cstr
-internal sem_argument_allowed
-internal sem_cat_str_to_str
-internal sem_charset_info
-internal sem_charset_lang_name
-internal sem_charset_name
-internal sem_child_allowed
-internal sem_control_allowed
-internal sem_convert_to_error
-internal sem_convert_to_float
-internal sem_convert_to_integer
-internal sem_convert_to_single_float
-internal sem_create_cstr
-internal sem_create_value_entry
-internal sem_create_wchar_str
-internal sem_dcl_name
-internal sem_evaluate_value
-internal sem_evaluate_value_cs
-internal sem_evaluate_value_expr
-internal sem_find_object
-internal sem_free_node
-internal sem_map_subclass_to_charset
-internal sem_output_uid_file
-internal sem_reason_allowed
-internal sem_ref_name
-internal sem_reference_procedure
-internal sem_resolve_forward_refs
-internal sem_validate_argument_entry
-internal sem_validate_argument_enumset
-internal sem_validate_argument_list
-internal sem_validate_callback_entry
-internal sem_validate_callback_list
-internal sem_validate_constraint_entry
-internal sem_validate_control_entry
-internal sem_validate_control_list
-internal sem_validate_node
-internal sem_validate_procref_entry
-internal sem_validate_procref_list
-internal sem_validate_value_node
-internal sem_validate_verify_cycle
-internal sem_validate_widget_cycle
-internal sem_validate_widget_cycle_aux
-internal sem_validate_widget_node
-internal sem_validation
-internal src_append_diag_info
-internal src_append_machine_code
-#if !defined(__hpux)
-internal src_az_avail_source_buffer
-internal src_az_current_source_buffer
-internal src_az_current_source_record
-internal src_az_first_source_record
-internal src_az_module_source_record
-internal src_az_orphan_messages
-internal src_az_source_file_table
-#endif
-internal src_get_file_name
-internal src_get_source_line
-internal src_initialize_source
-#if !defined(__hpux)
-internal src_l_last_source_file_number
-#endif
-internal src_open_file
-internal src_retrieve_source
-internal stbuf
-#if !defined(__hpux)
-internal sym_az_allocated_nodes
-internal sym_az_current_section_entry
-#endif
-internal sym_az_entry_list_header
-internal sym_az_error_value_entry
-#if !defined(__hpux)
-internal sym_az_external_def_chain
-internal sym_az_forward_ref_chain
-internal sym_az_freed_nodes
-internal sym_az_hash_table
-internal sym_az_module_entry
-internal sym_az_root_entry
-internal sym_az_val_forward_ref_chain
-#endif
-internal sym_dump_argument
-internal sym_dump_callback
-internal sym_dump_color_item
-internal sym_dump_control
-internal sym_dump_external_def
-internal sym_dump_forward_ref
-internal sym_dump_include_file
-internal sym_dump_list
-internal sym_dump_module
-internal sym_dump_name
-internal sym_dump_obj_header
-internal sym_dump_object_variant
-internal sym_dump_parent_list_item
-internal sym_dump_proc_def
-internal sym_dump_proc_ref
-internal sym_dump_root_entry
-internal sym_dump_section
-internal sym_dump_source_info
-internal sym_dump_symbol
-internal sym_dump_symbols
-internal sym_dump_value
-internal sym_dump_widget
-internal sym_find_name
-internal sym_initialize_storage
-internal sym_insert_name
-internal sym_make_external_def
-internal sym_make_forward_ref
-internal sym_make_value_forward_ref
-internal sym_section_text
-internal type_from_code
-internal uil_arg_compr
-#if !defined(__hpux)
-internal uil_az_error_env_block
-#endif
-internal uil_az_error_env_valid
-internal uil_catd
-internal uil_child_compr
-internal uil_exit
-internal uil_l_compile_status
-internal uil_reas_compr
-internal uil_urm_variant
-internal uil_v_case_sensitive
-internal uil_widget_compr
-internal unload_stack
-internal validate_arg
-internal write_msg_to_standard_error
-
-internal yydebug
-internal yyerror
-internal yylex
-internal yynerrs
-internal yyparse
-
-#if defined(hpux)
-internal yymaxdepth
-#endif
-
-#if defined(sun)
-internal yy_yys
-internal yy_yyv
-internal yyact
-internal yychar
-internal yychk
-internal yydef
-internal yyerrflag
-internal yyexca
-internal yylval
-internal yypact
-internal yypgo
-internal yyps
-internal yypv
-internal yyr1
-internal yyr2
-internal yyreds
-internal yys
-internal yystate
-internal yytmp
-internal yytoks
-internal yyv
-internal yyval
-#endif
+++ /dev/null
-XCOMM $TOG: Imakefile /main/16 1998/03/11 20:19:03 mgreess $
-XCOMM
-XCOMM @OSF_COPYRIGHT@
-XCOMM COPYRIGHT NOTICE
-XCOMM Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-XCOMM ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-XCOMM the full copyright text.
-
-INCLUDES = -I. -I$(INCLUDESRC) -I$(MINCLUDESRC) -I$(MLIBSRC) -I$(MTOP)/include
-DEPLIBS = $(DEPXMLIB) $(DEPXTOOLLIB) $(DEPXLIB)
-LOCAL_LIBRARIES = $(XMLIB) $(XTOOLLIB) $(XLIB)
-
-
-SRCS1 = wml.c wmlouth.c wmloutmm.c \
- wmloutp1.c wmlresolve.c wmlsynbld.c wmlutils.c \
- wmldbcreate.c
-
-OBJS1 = wml.o wmloutkey.o wmlouth.o wmloutmm.o \
- wmloutp1.o wmlresolve.o wmlsynbld.o wmlutils.o
-
-SRCS2 = wmluiltok.l
-
-OBJS2 = wmlparse.o
-
-SRCS = $(SRCS1) $(SRCS2)
-
-YACCTARGETS = UilLexPars.c UilLexPars.h
-
-WMLTARGETS = UilConst.h UilKeyTab.h \
- UilSymArTa.h UilSymArTy.h UilSymCSet.h UilSymCtl.h \
- UilSymEnum.h UilSymGen.h UilSymNam.h UilSymRArg.h \
- UilSymReas.h UilTokName.h UilUrmClas.h UilSymChCl.h \
- UilSymChTa.h
-
-TARGETS = $(YACCTARGETS) $(WMLTARGETS)
-
-TABLE = motif.wml
-WMDTABLE = motif.wmd
-WMLTOOLS = wml wmluiltok
-REPORT = wml.report
-
-NormalLibraryObjectRule()
-
-all:: DONE
-
-DONE: $(WMDTABLE) $(TARGETS)
- (cd $(UILSRC); $(RM) $(TARGETS) UilDBDef.h)
- cp $(TARGETS) UilDBDef.h $(UILSRC)
- touch DONE
-
-NormalLibraryTarget(wml,$(OBJS2) $(OBJS1))
-
-install:: all
-
-wml:: libwml.a
- $(CC) $(CFLAGS) libwml.a -o wml
-
-NormalProgramTarget(wmldbcreate,wmldbcreate.o,$(DEPLIBS),$(LOCAL_LIBRARIES),$(SYSLIBS))
-
-wmlparse.c: wmlparse.y wmllex.l
- $(LEX) wmllex.l
- $(MV) lex.yy.c wmllex.c
- $(YACC) -d $(YACCFLAGS) wmlparse.y
- $(RM) wmlparse.c wmlparse.h
- $(MV) y.tab.c wmlparse.c
- $(MV) y.tab.h wmlparse.h
-
-wmlparse.h:: wmlparse.y wmllex.l
- $(LEX) wmllex.l
- $(MV) lex.yy.c wmllex.c
- $(YACC) -d $(YACCFLAGS) wmlparse.y
- $(MV) y.tab.c wmlparse.c
- $(MV) y.tab.h wmlparse.h
-
-wmluiltok:: wmluiltok.l
- $(LEX) wmluiltok.l
- $(CC) $(CFLAGS) lex.yy.c $(LEXLIB) -o wmluiltok
-
-$(TARGETS): $(WMLTOOLS) $(TABLE)
- $(RM) $(TARGETS) $(REPORT) wml-uil.mm
- $(YACC) -d $(YACCFLAGS) Uil.y
- $(MV) y.tab.c UilLexPars.c
- $(MV) y.tab.h UilLexPars.h
- $(CLIENTENVSETUP) ./wmluiltok < Uil.y > tokens.dat
- $(RM) wml-uil.mm
- $(CLIENTENVSETUP) ./wml $(TABLE)
- $(RM) tokens.dat
-
-$(WMDTABLE): wmldbcreate
- $(CLIENTENVSETUP) ./wmldbcreate -o $@
-
-clean::
- $(RM) $(TARGETS) $(WMDTABLE) $(REPORT) lex.yy.c libwml.a wml \
- *.mm *.sdml *.txt wmlparse.c wmlparse.h wmluiltok wmllex.c \
- tokens.dat DONE
-
-depend:: wmlparse.h
-
-DependTarget()
-
-includes:: $(TARGETS)
- (cd $(UILSRC); $(RM) $(TARGETS) UilDBDef.h)
- cp $(TARGETS) UilDBDef.h $(UILSRC)
+++ /dev/null
-/* $XConsortium: README /main/4 1996/07/15 14:38:42 drk $ */
-This memo documents the Widget MetaLanguage (WML) facility which generates
-the Uil compiler language description.
-
-1. Introduction
-
-The Uil compiler's language definition has the following components:
- - Invariant parts of the language grammar. This consists of the
- basic syntax and keywords, for example, the 'arguments' directive.
- - Dynamic parts of the language. This consists of the widget/gadget
- classes supported by the language, including all resources
- (arguments and reasons), and the definitions of legal relationships
- among these parts (which classes are legal controls (children)
- of any given class, default values, and so on).
- - The data types supported by the compiler. The code which supports
- the data types is invariant, but the data types must also be
- declared and made known in WML in order to provide a clean
- specification.
-
-The dynamic parts of the language definition in the compiler are represented
-as follows. The representation falls into two classes:
- - Definitions of the language used for validity checking and
- reporting:
- o A set of #define literals name all data types, classes,
- arguments, and reasons in the language.
- o A set of statically compiled tables defines the names and
- legal relationships among these entities.
- - All data types, classes, arguments, and reasons are treated as
- keywords in the Uil grammar. This is supported by:
- o A set of #define literals which names all the tokens in
- the language. Some of these tokens receive identical
- values to the literals mentioned above (this identity is
- crucial to the compiler's correct functioning).
- o A set of statically compiled tables used by lexical
- analysis to detect and classify the language keywords.
- o A yacc grammar including these token definitions which
- generates a compilable Uil language parser.
-
-These representations are all contained in .h files except for the parser,
-which is contained in a .y file and its resulting .c file.
-
-The WML system's task is to generate all these literals and tables based on
-a specification of the dynamic parts of the Uil language - the data types,
-widget/gadget classes, arguments, and reasons. The components of the system
-are:
- - A specification of the of set of widgets to be supported. This
- specification is an ASCII file containing a WML language
- specification as described below. The WML language is a simple
- declarative language whose syntax is similar to Uil itself.
- - A process named wml, which parses the WML specification and
- produces the following output:
- o The .h files which define the first class of language
- representations - the validity checking and reporting
- information.
- o A set of .dat files which are used by succeeding processes
- to produce the Uil grammar.
- o A report file which describes the toolkit being supported.
- o A .mm file to be incorporated in the Uil language
- documentation, which tabulates the built-in language
- tables for Uil user reference.
- - A process named wmluily which generates the Uil grammar.
- - A process named wmltokens which generates token data
- - A process named wmlkeyword which generates the token and lexical
- analysis tables.
-
-A shell script is provided which runs the system. The individual processes
-and inputs can usually be ignored.
-
-
-2. Environment
-
-The generation and use of the WML system requires the following:
- - The C language compiler and runtime system (cc).
- - The lexical generator facility (lex)
- - the compiler compiler facility (yacc)
-
-The WML facility is found in directory /wmlsrc. It assumes the following
-directories also exist:
- /uilsrc - the directory to which the output files are to be moved
- /mrmsrc/Mrm - contains MrmCmpr.h and other .h files required to
- compile the uil compiler.
-
-The tables produced by WML must be consistent with the Mrm compression
-code tables emboded in /mrmsrc/Mrm/MrmCmpr.h and /mrmsrc/Mrm/MrmCmprTbl.h.
-If in doubt, refer to /mrmsrc/Mrm/urmc.README for details.
-
-
-3. WML input
-
-Input to WML consists of:
- - A description of the widget set (toolkit) to be suppported in
- the WML specification language.
- - Data files supplied with WML facility, and which you will
- usually not need to modify. These are:
- o grammar.y - specifies the invariant part of the
- Uil grammar
- o charset.dat - specifies the character sets supported by
- the compiler when handling compound strings
- Any other .dat files found in /wmlsrc are the result of running
- the facility, and may be ignored.
-
-3.A. WML specification language
-
-The WML specification is a simple declarative language whose syntax is
-similar to that of Uil itself. It models the widget set to be suppored in
-a way that is very similar to the Uil language. It differs in having class
-inheritance similar to Xt widget classes, which minimizes the amount of
-specification and reduces errors. The properties of the model are:
- - Class properties
- o Classes are differentiated into two types - metaclasses
- and classes. Metaclasses cannot instantiate widgets.
- Typically, a WML metaclass is generated for each metaclass
- in the widget set to be supported.
- o A regular class is defined for every low-level create
- routine in the widget set. There are typically more WML
- classes that widget set classes. For instance, there
- is one XmRowColumn class, with six WML classes (XmRowColumn
- XmMenuBar, XmOptionMenu, XmPopupMenu, XmPulldownMenu,
- XmRadioBox).
- o Gadgets are modelled as variants of a corresponding
- widget class.
- o A class may have zero or one superclasses. A class
- inherits all the resources and controls of its superclass
- (recursively). An inherited resource may have some of
- its properties overridden.
- o A class is given a name which becomes its Uil language
- keyword (for regular classes). Metaclass names do
- not appear in Uil.
- o A class is identified to Mrm by its creation
- convenience function (low-level create function). Examples
- are XmCreateLabel, XmCreatePushButtonGadget.
- - Resource properties
- o Resources are divided into two classes - arguments and
- and reasons. This models the Uil language distinction
- between callbacks and all other resources.
- o A resource is considered to have universal scope. Once
- defined, it may be used in any class. Its name and datatype
- are invariant, but its default value may be overridden.
- o A resource is included in a class by referencing it.
- Resources are inherited. Inherited resources may be
- excluded, which meancs they are not available in the
- class which provides this override (and its subclasses).
- This corresponds to the Motif toolkit N/A access value.
- o A resource is given a name which becomes its Uil language
- keyword.
- o A resource is identified to Mrm by the toolkit literal
- used to name it in arglists. Examples are
- XmNheight, XmNancestorSensitive, XmNhelpCallback. The
- resource literal defaults to the resource name, and need
- not be explicitly specified where they are identical.
- - Control properties
- o A control is a class which is permitted as the child
- of some other class.
- o Naming the controls of a class is a WML feature which
- supports validity checking. There is no coresponding
- explicit feature in any Xt widget set.
-
-3.A.1 WML syntax and semantics
-
-The WML syntax can be quickly inferred from the standard input file
-provided with WML - motif-tables.wml. A quick BNF is provided in section 7.
-
-
-WML semantics are:
- - '!' introduces a comment. Comments run from '!' to EOL.
- - A string value may be quoted by enclosing in double quotes '"'.
- Names as well as values may be quoted. Keywords may not.
- - All names are case-sensitive. Forward and backward references
- are allowed. All references to be resolved are to items defined
- in WML. These are:
- o Type = <an item defined in a DataType statement>
- o SuperClass =
- WidgetClass = <an item defined in a Class statement>
- o Resources { <items defined in Resource statement> };
- o Controls { <items defined in Class or ControlList>
- statements> };
- - A convenience function name is required for all classes except
- Metaclasses.
- - Datatypes are required for all Arguments, Constraints, and
- SubResources.
- - Arguments and SubResources are functionally identical, and
- are distinguished only because they are different kinds of
- resources in Xt widget sets. Constraints apply only to the
- referencing class's children. The same name may not be
- used for both an Argument and a Constraint (once a Constraint,
- always a Constraint).
- - If a resource occurs in the widget set with more than one
- datatype, the Uil datatype 'any' must be used.
- - The ResourceLiteral attribute for resources is optional, and
- need only be specified when the name is not identical to the literal.
- - The DocName and Default attributes are only used for documentation.
- They are arbitrary strings.
- - The WidgetClass attribute identifies the Widget class
- associated with a Gadget class, and is required.
- - The DialogClass attribute is optional.
- - The ControlList statement is a simply macro for lists of
- controls. It avoids tedious repetition of identical lists.
- A Controls block in a Class statement allows Class and
- ControlList names to be freely mixed.
-
-
-4. WML output
- - The .h files and parser required by the compiler. These
- are automatically moved to /uilsrc by the runwml script.
- - A report describing the supported widget set, always named
- wml.report. This report is intended to aid in validating
- the WML source. The report is organized in a way which makes
- if fairly easy to compare the Uil langauge against widget
- set documentation as exemplified by the Motif Programmer's
- Reference Manual. The reported is sorted as follows:
- - alphabetically by class name
- - Resources ordered by ancestor (top of tree first).
- Resources are listed alphabetically, with datatype
- and default always shown.
- - Reasons ordered by ancestor (top of tree first),
- then alphabetically.
- - Controls listed alphabetically.
- - A file which provides documentation for the language, intended
- to be an appendix to a Uil manual as exemplified by the
- Guide to the Motif User Interface Language Compiler. This file
- is named wml-uil.mm
-
-
-5. Generating and running WML
-
-The script file /wmlsrc/genwml will build WML. The script file /wmlsrc/runwml
-will run WML with motif-tables.src as input.
-
-
-6. Gotchas and problems in current WML implementation
-
-The script files genwml and runwml should be replaced by Makefiles.
-
-The documentation file ?.mm is relatively untested. The tables should
-probably be modified, as they are currently too big to print cleanly.
-The handling of the DocName attribute is incorrect.
-
-The specification of the Motif toolkit in motif-tables.wml has not been
-fully validated against the latest toolkit documentation. We believe there
-are no or very few errors in the actual resources and the classes which
-use them. There may be errors in the default values, which will appear
-in the documentation.
-
-
-7. WML BNF
-
-WML-specification : statement_block_list
-
-statement_block_list:
- <empty>
- statement_block_list statement_block
-
-statement_block:
- class_statement_block
- | resource_statement_block
- | datatype_statement_block
- | control_list_statement_block
-
-class_statement_block:
- 'Class' class_statement_list
-
-resource_statement_block:
- 'Resource' resource_statement_list
-
-datatype_statement_block:
- 'Datatype' datatype_statement_list
-
-control_list_statement_block:
- 'ControlList' control_list_statement_list
-
-class_statement_list:
- class_statement ';'
- | class_statement_list class_statement ';'
-
-resource_statement_list:
- resource_statement ';'
- | resource_statement_list resource_statement ';'
-
-datatype_statement_list:
- datatype_statement ';'
- | datatype_statement_list datatype_statement ';'
-
-control_list_statement_list:
- control_list_statement ';'
- | control_list_statement_list control_list_statement ';'
-
-class_statement:
- <name> ':' class_type class_definition
-
-class_type:
- 'MetaClass' | 'Widget' | 'Gadget'
-
-class_definition:
- <empty>
- | '{' '}'
- | '{' class_attribute_list '}'
-
-class_attribute_list:
- class_attribute_name '=' <string> ';'
- | class_boolean_attribute_name '=' boolean_attribute_value ';'
- | class_resources ';'
- | class_controls ';'
-
-class_attribute_name:
- 'SuperClass' | 'Alias' | 'ConvenienceFunction' | 'WidgetClass' |
- 'DocName'
-
-class_boolean_attribute_name:
- 'DialogClass'
-
-boolean_attribute_value:
- 'True' | 'False'
-
-class_resources:
- 'Resources' class_resources_block
-
-class_resources_block:
- <empty>
- '{' '}'
- '{' class_resource_list '}'
-
-class_resource_list:
- class_resource_element
- | class_resource_list class_resource_element
-
-class_resource_element:
- <name> class_resource_attributes ';'
-
-class_resource_attributes:
- <empty>
- '{' '}' ';'
- '{' class_resource_attribute_list '}'
-
-class_resource_attribute_list:
- class_resource_attribute_element
- | class_resource_attribute_list class_resource_attribute_element
-
-class_attribute_element
- class_resource_attribute_name '=' <string> ';'
- | boolean_class_resource_attribute_name '=' boolean_attribute_value ';'
-
-class_resource_attribute_name:
- 'Default'
-
-boolean_class_resource_attribute_name:
- 'Exclude'
-
-class_controls:
- 'Controls' class_controls_block
-
-class_controls_block:
- <empty>
- | '{' '}' ';'
- | '{' class_controls_list '}'
-
-class_controls_list:
- class_controls_element
- class_controls_list class_controls_element
-
-class_controls_element:
- <name> ;
-
-resource_statement:
- <name> ':' resource_type resource_definition
-
-resource_type:
- 'Argument' | 'Reason' | 'Constraint' | 'SubResource'
-
-resource_definition:
- <empty>
- '{' '}'
- '{' resource_attribute_list '}'
-
-resource_attribute_list:
- resource_attribute
- resource_attribute_list resource_attribute
-
-resource_attribute:
- resource_attribute_name '=' <string> ';'
-
-resource_attribute_name:
- 'Type' | 'ResourceLiteral' | 'Alias' | 'Related' | 'Default' |
- 'DocName'
-
-datatype_statement:
- <name> datatype_definition
-
-datatype_definition:
- <empty>
- | '{' '}'
- | '{' datatype_attribute_list '}'
-
-datatype_attribute_list:
- datatype_attribuute
- datatype_attribute_list datatype_attribute
-
-datatype_attribute:
- datatype-attribute_name '=' <string> ';'
-
-datatype_attribute_name:
- 'Alias' | 'DocName'
-
-control_list_statement:
- <name> control_list_definition
-
-control_list_definition:
- <empty>
- '{' '}'
- '{' control_list_controls_list '}'
-
-control_list_controls_list:
- control_list_control
- control_list_controls_list control_list_control
-
-control_list_control:
- <name> ';'
+++ /dev/null
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* "$TOG: Uil.y /main/11 1998/01/23 15:05:38 mgreess $" */
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** DECwindows Toolkit User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** YACC Grammar for UIL
-**--
-**/
-
-%{
-
-
- /* Begin user declarations section */
-
-#include "UilDefI.h"
-#include "UilCompGl.h"
-
-#define YYSTYPE yystype
-
-#define YYDEBUG 1
-
-/* Declare and initialize stack entry for epsilon productions. */
-
-YYSTYPE gz_yynullval = {NULL,0,0,0,0};
-
-/* Declare token to aid in saving source context */
-
-YYSTYPE prev_yylval;
-
- /* End user declarations section */
-
-%}
-
-/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- * token name token value token class *
- * ---------- ----------- ----------- *
- *----------------------------------------------------------------------------*
- */
-
-/*
-** terminals of the language
-**
-** NOTE: the tags which appear in comments at the end of each token
-** definition name the token class for the token. These name the
-** the .dat file processed by WML while constructing token tables.
-** Thus the output of WML and these tags must match, e.g. for
-** the token tag 'special' the file 'special.dat' must exist.
-*/
-
-/* end of file indicator */
-
-%token UILEOF 0 /* unused */
-
-/* names */
-
-%token NAME 1 /* identifier */
-%token FONT_NAME 2 /* font */
-%token COLOR_NAME 3 /* color */
-%token ARGUMENT_NAME 4 /* argument */
-%token REASON_NAME 5 /* reason */
-%token CHARSET_NAME 6 /* charset */
-%token ENUMVAL_NAME 7 /* enumval */
-%token CLASS_NAME 8 /* class */
-%token CHILD_NAME 96 /* child */
-
-/* Literals */
-
-%token UNS_FLOAT_LITERAL 9 /* literal */
-%token COMP_STRING 10 /* literal */
-%token CHAR_8_LITERAL 11 /* literal */
-%token UNS_INT_LITERAL 12 /* literal */
-
-/* Special characters. Treat these as tokens rather than literals, so
- * that we can assign token numbers to them rather than have YACC use
- * the ASCII value as the token number.
- */
-
-%token LEFT_PAREN 13 /* special */
-%token RIGHT_PAREN 14 /* special */
-%token COLON 15 /* special */
-%token SEMICOLON 16 /* special */
-%token LEFT_BRACE 17 /* special */
-%token RIGHT_BRACE 18 /* special */
-%token COMMA 19 /* special */
-%token EQUAL_SIGN 20 /* special */
-%token NOT 21 /* special */
-%token PLUS 22 /* special */
-%token MINUS 23 /* special */
-%token AND 24 /* special */
-%token OR 25 /* special */
-%token XOR 26 /* special */
-%token MULTIPLY 27 /* special */
-%token DIVIDE 28 /* special */
-%token LEFT_SHIFT 29 /* special */
-%token RIGHT_SHIFT 30 /* special */
-
-/* Reserved words */
-
-%token LIST 31 /* reserved */
-%token IDENTIFIER 32 /* reserved */
-%token END 33 /* reserved */
-%token MODULE 34 /* reserved */
-%token UILTRUE 35 /* reserved */
-%token UILFALSE 36 /* reserved */
-%token INCLUDE 37 /* reserved */
-%token MACRO 38 /* reserved */
-%token ON 39 /* reserved */
-%token OFF 40 /* reserved */
-%token VALUE 41 /* reserved */
-%token ARGUMENTS 42 /* reserved */
-%token CALLBACKS 43 /* reserved */
-%token PROCEDURES 44 /* reserved */
-%token CONTROLS 45 /* reserved */
-%token PROCEDURE 46 /* reserved */
-%token OBJECT 47 /* reserved */
-
-/* Declaratives */
-
-%token OBJECTS 48 /* keyword */
-%token WIDGET 49 /* reserved */
-%token GADGET 50 /* reserved */
-
-%token FONT 51 /* keyword */
-%token ARGUMENT 52 /* keyword */
-%token REASON 53 /* keyword */
-%token PIXMAP 54 /* keyword */
-%token COLOR 55 /* keyword */
-
-%token NAMES 56 /* keyword */
-%token CHARACTER_SET 57 /* keyword */
-%token CASE_SENSITIVE 58 /* keyword */
-%token CASE_INSENSITIVE 59 /* keyword */
-
-%token VERSION 60 /* keyword */
-
-%token MANAGED 61 /* keyword */
-%token UNMANAGED 62 /* keyword */
-
-%token PRIVATE 63 /* reserved */
-%token IMPORTED 64 /* keyword */
-%token EXPORTED 65 /* reserved */
-
-%token UILFILE 66 /* keyword */
-
-%token STRING_TABLE 67 /* keyword */
-%token TRANSLATION_TABLE 68 /* keyword */
-%token COMPOUND_STRING 69 /* keyword */
-%token FONT_TABLE 70 /* keyword */
-
-%token ANY 71 /* keyword */
-%token STRING 72 /* keyword */
-%token BOOLEAN 73 /* keyword */
-%token ICON 74 /* keyword */
-%token RIGHT_TO_LEFT 75 /* keyword */
-%token BACKGROUND 76 /* keyword */
-%token FOREGROUND 77 /* keyword */
-%token COLOR_TABLE 78 /* keyword */
-%token FLOAT 79 /* keyword */
-%token INTEGER 80 /* keyword */
-%token CLASS_REC_NAME 81 /* keyword */
-%token ASCIZ_TABLE 82 /* keyword */
-%token INTEGER_TABLE 83 /* keyword */
-%token ASCIZ_STRING_TABLE 84 /* keyword */
-%token COMPOUND_STRING_TABLE 85 /* keyword */
-%token XBITMAPFILE 86 /* keyword */
-%token SEPARATE 87 /* keyword */
-%token SIXTEEN_BIT 88 /* keyword */
-%token POUND 89 /* special */
-%token KEYSYM 90 /* keyword */
-%token SINGLE_FLOAT 91 /* keyword */
-%token RGB 92 /* keyword */
-%token WIDE_CHARACTER 93 /* keyword */
-%token LOC_STRING 94 /* literal */ /* New for 1.2 */
-%token FONTSET 95 /* keyword */
-%token COMPOUND_STRING_COMPONENT 97 /* keyword */
-
-%token PIX 115
-%token PIXEL 103
-%token PIXELS 104
-%token IN 98
-%token INCH 105
-%token INCHES 106
-%token CM 99
-%token CENTIMETER 107
-%token CENTIMETERS 108
-%token MM 100
-%token MILLIMETER 109
-%token MILLIMETERS 110
-%token PT 101
-%token POINT 111
-%token POINTS 112
-%token FU 102
-%token FONT_UNIT 113
-%token FONT_UNITS 114
-
-%start module_block
-
-%%
-
-\f
-
-/*
-** productions of the grammar
-*/
-
-
-/* module structure */
-
-module_block
- : module_header
- { sar_save_module_source (); }
- module_declaration_list END MODULE SEMICOLON
- ;
-
-module_header
- : /* empty */ { sar_create_root ( &$$ ); }
- MODULE id { sar_create_module( &$$, &$3, &$2 ); }
- opt_module_clauses
- ;
-
-opt_module_clauses
- : /* empty */
- | module_clauses
- ;
-
-module_clauses
- : module_clause
- | module_clauses module_clause
- ;
-
-module_clause
- : VERSION EQUAL_SIGN character_8_value { sar_process_module_version( &$3 , &$1 ); }
- | NAMES EQUAL_SIGN sensitivity_value { sar_process_module_sensitivity( &$3 , &$1 ); }
- | CHARACTER_SET EQUAL_SIGN valid_charset { sar_process_module_charset( &$3 , &$1 ); }
- | OBJECTS { sar_make_def_obj (&$1); } EQUAL_SIGN variant_spec
- ;
-
-sensitivity_value
- : CASE_SENSITIVE
- | CASE_INSENSITIVE
- ;
-
-variant_spec
- : LEFT_BRACE RIGHT_BRACE
- | LEFT_BRACE variant_list RIGHT_BRACE
- | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
- ;
-
-variant_list
- : variant_clause SEMICOLON
- | variant_list variant_clause SEMICOLON
- | error { lex_issue_error (SEMICOLON); } SEMICOLON
- ;
-
-variant_clause
- : CLASS_NAME { sar_make_def_obj (&$1); }
- EQUAL_SIGN variant { sar_process_module_variant (&$1, &$4); $$ = gz_yynullval; }
- ;
-
-variant
- : WIDGET { $$ = gz_yynullval; $$.b_type = sym_k_widget_entry; }
- | GADGET { $$ = gz_yynullval; $$.b_type = sym_k_gadget_entry; }
- ;
-
-module_declaration_list
- : /* empty */
- | module_declaration_list module_declaration
- ;
-
-module_declaration
- : value_declaration
- | identifier_declaration
- | procedure_declaration
- | object_declaration
- | list_declaration
- | include_directive
- ;
-
-\f
-
-/* VALUE declaration */
-
-value_declaration
- : VALUE { $$ = $1; sar_save_section_source (&$1, sym_k_value_section); } value_declaration_list
- ;
-
-value_declaration_list
- : value_decl
- | value_declaration_list value_decl
- | error { lex_issue_error (SEMICOLON); } SEMICOLON
- ;
-
-value_decl
- : id COLON value_definition SEMICOLON { sar_bind_value_name( &$1, &$3, &$4 ); }
- ;
-
-value_definition
- : EXPORTED private_value { $$ = $2; $$.b_flags |= sym_m_exported; $$.b_flags &= ~sym_m_private; }
- | PRIVATE private_value_plus { $$ = $2; $$.b_flags |= sym_m_private; $$.b_flags &= ~sym_m_exported; }
- | private_value_plus { $$ = $1; $$.b_flags |= sym_m_private; $$.b_flags &= ~sym_m_exported; }
- | IMPORTED value_type { sar_import_value_entry( &$$, &$2 ); }
- ;
-
-value_type
- : INTEGER { $$ = $1; $$.b_type = sym_k_integer_value; }
- | STRING { $$ = $1; $$.b_type = sym_k_char_8_value; }
- | PIXMAP { $$ = $1; $$.b_type = sym_k_pixmap_value; }
- | FLOAT { $$ = $1; $$.b_type = sym_k_float_value; }
- | BOOLEAN { $$ = $1; $$.b_type = sym_k_bool_value; }
- | FONT { $$ = $1; $$.b_type = sym_k_font_value; }
- | REASON { $$ = $1; $$.b_type = sym_k_reason_value; }
- | ARGUMENT { $$ = $1; $$.b_type = sym_k_argument_value; }
- | COLOR { $$ = $1; $$.b_type = sym_k_color_value; }
- | string_table_type { $$ = $1; $$.b_type = sym_k_string_table_value; }
- | asciz_table_type { $$ = $1; $$.b_type = sym_k_asciz_table_value; }
- | INTEGER_TABLE { $$ = $1; $$.b_type = sym_k_integer_table_value; }
- | TRANSLATION_TABLE { $$ = $1; $$.b_type = sym_k_trans_table_value; }
- | FONT_TABLE { $$ = $1; $$.b_type = sym_k_font_table_value; }
- | ICON { $$ = $1; $$.b_type = sym_k_icon_value; }
- | COMPOUND_STRING { $$ = $1; $$.b_type = sym_k_compound_string_value; }
- | COMPOUND_STRING_COMPONENT { $$ = $1; $$.b_type = sym_k_compound_string_value; }
- | CLASS_REC_NAME { $$ = $1; $$.b_type = sym_k_class_rec_name_value; }
- | XBITMAPFILE { $$ = $1; $$.b_type = sym_k_xbitmapfile_value; }
- | KEYSYM { $$ = $1; $$.b_type = sym_k_keysym_value; }
- | SINGLE_FLOAT { $$ = $1; $$.b_type = sym_k_single_float_value; }
- | RGB { $$ = $1; $$.b_type = sym_k_rgb_value; }
- | WIDE_CHARACTER { $$ = $1; $$.b_type = sym_k_wchar_string_value; }
- | FONTSET { $$ = $1; $$.b_type = sym_k_fontset_value; }
- | WIDGET { $$ = $1; $$.b_type = sym_k_widget_ref_value; }
- ;
-
-/* Seperately defined for fixing CR 5888 */
-arg_value_type
- : INTEGER { $$ = $1; $$.b_type = sym_k_integer_value; }
- | STRING { $$ = $1; $$.b_type = sym_k_char_8_value; }
- | PIXMAP { $$ = $1; $$.b_type = sym_k_pixmap_value; }
- | FLOAT { $$ = $1; $$.b_type = sym_k_float_value; }
- | BOOLEAN { $$ = $1; $$.b_type = sym_k_bool_value; }
- | FONT { $$ = $1; $$.b_type = sym_k_font_value; }
- | REASON { $$ = $1; $$.b_type = sym_k_reason_value; }
- | COLOR { $$ = $1; $$.b_type = sym_k_color_value; }
- | string_table_type { $$ = $1; $$.b_type = sym_k_string_table_value; }
- | asciz_table_type { $$ = $1; $$.b_type = sym_k_asciz_table_value; }
- | INTEGER_TABLE { $$ = $1; $$.b_type = sym_k_integer_table_value; }
- | TRANSLATION_TABLE { $$ = $1; $$.b_type = sym_k_trans_table_value; }
- | FONT_TABLE { $$ = $1; $$.b_type = sym_k_font_table_value; }
- | ICON { $$ = $1; $$.b_type = sym_k_icon_value; }
- | COMPOUND_STRING { $$ = $1; $$.b_type = sym_k_compound_string_value; }
- | KEYSYM { $$ = $1; $$.b_type = sym_k_keysym_value; }
- | SINGLE_FLOAT { $$ = $1; $$.b_type = sym_k_single_float_value; }
- | WIDE_CHARACTER { $$ = $1; $$.b_type = sym_k_wchar_string_value; }
- | FONTSET { $$ = $1; $$.b_type = sym_k_fontset_value; }
- | WIDGET { $$ = $1; $$.b_type = sym_k_widget_ref_value; }
-/* End for fixing CR 5888 */
-
-string_table_type
- : STRING_TABLE
- | COMPOUND_STRING_TABLE
- ;
-
-asciz_table_type
- : ASCIZ_TABLE
- | ASCIZ_STRING_TABLE
- ;
-\f
-
-/* PROCEDURE declaration */
-
-procedure_declaration
- : PROCEDURE { $$ = $1; sar_save_section_source (&$1, sym_k_procedure_section); } procedure_declaration_list
- ;
-
-procedure_declaration_list
- : procedure_decl
- | procedure_declaration_list procedure_decl
- | error { lex_issue_error (SEMICOLON); } SEMICOLON
- ;
-
-procedure_decl
- : id opt_formal_parameters opt_class SEMICOLON { sar_create_procedure( &$1, &$2, &$3, &$4 );}
- ;
-
-opt_formal_parameters
- : /* empty */ { $$ = gz_yynullval; }
- | LEFT_PAREN formal_parameter_type RIGHT_PAREN { $$ = $2; }
- ;
-
-formal_parameter_type
- : /* empty */ { $$ = gz_yynullval; $$.b_type = sym_k_no_value; }
- | value_type
- | ANY { $$ = $1; $$.b_type =
-sym_k_any_value; }
- | CLASS_NAME
- { YYSTYPE temp[2];
- temp[0] = gz_yynullval;
- sar_create_object(&temp[0], sym_k_widget_entry);
- temp[1] = $1; sar_set_object_class(&temp[1]);
- sar_verify_object(&temp[1]);
- $$ = temp[0];
- }
- ;
-
-opt_class
- : /* empty */ { $$.b_flags = sym_m_private; }
-/*
- | EXPORTED { $$.b_flags = sym_m_exported; }
- | PRIVATE { $$.b_flags = sym_m_private; }
- | IMPORTED { $$.b_flags = sym_m_imported; }
-*/
- ;
-
-\f
-
-/* IDENTIFIER declaration */
-
-identifier_declaration
- : IDENTIFIER { $$ = $1; sar_save_section_source (&$1, sym_k_identifier_section); } identifier_declaration_list
- ;
-
-identifier_declaration_list
- : identifier_decl
- | identifier_declaration_list identifier_decl
- | error { lex_issue_error (SEMICOLON); } SEMICOLON
- ;
-
-identifier_decl
- : id SEMICOLON { sar_create_identifier ( &$1, &$2 ); }
- ;
-
-\f
-
-/* Directives. */
-
-/* Include Directive */
-
-include_directive
- : INCLUDE UILFILE character_8_value SEMICOLON { sar_include_file (&$3, &$1, &$4); }
- | error { lex_issue_error (SEMICOLON); } SEMICOLON
- ;
-
-\f
-
-/* OBJECT declaration */
-
-object_declaration
- : OBJECT { $$ = $1; sar_save_section_source (&$1, sym_k_object_section); } object_decl_list
- ;
-
-object_decl_list
- : object_decl SEMICOLON { $$ = $1; sar_save_src_semicolon_pos (&$2 ); }
- | object_decl_list object_decl SEMICOLON { $$ = $1; sar_save_src_semicolon_pos (&$3 ); }
- | error { lex_issue_error (SEMICOLON); } SEMICOLON
- ;
-
-object_decl
- : id
- { sar_create_object (&$1, sym_k_widget_entry);
- sar_link_section (&$1); $$ = gz_yynullval;}
- COLON object_definition
- { $$ = gz_yynullval; }
- ;
-
-object_definition
- : EXPORTED
- { sar_set_object_flags (&$1, sym_m_exported); }
- object_specification
- | PRIVATE
- { sar_set_object_flags (&$1, sym_m_private); }
- object_specification
- | epsilon_production
- { sar_set_object_flags (&$1, sym_m_exported); }
- object_specification
- | IMPORTED
- { sar_set_object_flags (&$1, sym_m_imported); }
- CLASS_NAME
- { sar_set_object_class (&$3); }
-/*
- * Fix for CR 5440 - Call opt_create_proc_ref to check for creation procedures
- * for imported user_defined widgets.
- */
- opt_create_proc_ref
-/*
- * End fix for CR 5440
- */
- epsilon_production
- { sar_verify_object (&$1); }
- ;
-
-control_object_definition
- : EXPORTED
- { sar_set_object_flags (&$1, sym_m_exported); }
- object_specification
- | PRIVATE
- { sar_set_object_flags (&$1, sym_m_private); }
- object_specification
- | MANAGED
- { sar_set_object_flags (& $1, (sym_m_managed | sym_m_exported)); }
- object_specification
- | UNMANAGED
- { sar_unset_object_flags (& $1, sym_m_managed), sar_set_object_flags (& $1, sym_m_exported); }
- object_specification
- | epsilon_production
- { sar_set_object_flags (&$1, sym_m_exported); }
- object_specification
- | IMPORTED
- { sar_set_object_flags (&$1, sym_m_imported); }
- CLASS_NAME
- { sar_set_object_class (&$3); }
- epsilon_production
- { sar_verify_object (&$1); }
- ;
-
-object_specification
- : CLASS_NAME
- { sar_set_object_class (&$1); }
- opt_create_proc_ref
- opt_variant
- object_spec
- { sar_verify_object (&$1); }
- ;
-
-opt_variant
- : epsilon_production
- { sar_set_object_variant (&$1); }
- | variant
- { sar_set_object_variant (&$1); }
- ;
-
-control_object_specification
- : CLASS_NAME
- { sar_set_object_class (&$1); $$ = gz_yynullval;}
- opt_create_proc_ref
- opt_variant
- control_object_spec
- { sar_verify_object (&$1); }
- ;
-
-opt_create_proc_ref
- : epsilon_production
- | PROCEDURE id_ref opt_parens
- { sar_process_proc_ref (&$2, &gz_yynullval, sym_k_object_proc);
- sar_save_user_proc_ref_src ( &$1, &$2, &$3 ); }
- ;
-
-opt_parens
- : epsilon_production
- | LEFT_PAREN RIGHT_PAREN { $$ = $2; }
- ;
-
-
-\f
-
-/* object specification. */
-
-object_spec
- : id_ref
- { sar_object_reference (&$1); }
- | LEFT_BRACE RIGHT_BRACE
- | LEFT_BRACE object_feature_list RIGHT_BRACE
- | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
- ;
-
-control_object_spec
- : id_ref
- { sar_object_reference (&$1); }
- | LEFT_BRACE RIGHT_BRACE
- epsilon_production
- { sar_set_object_flags (&$1, sym_m_exported); }
- | LEFT_BRACE object_feature_list RIGHT_BRACE
- epsilon_production
- { sar_set_object_flags (&$1, sym_m_exported); }
- | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
- ;
-
-child_object_spec
- : LEFT_BRACE RIGHT_BRACE
- epsilon_production
- { sar_set_object_flags (&$1, sym_m_private); }
- | LEFT_BRACE object_feature_list RIGHT_BRACE
- epsilon_production
- { sar_set_object_flags (&$1, sym_m_private); }
- | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
- ;
-
-object_feature_list
- : object_feature
- | object_feature_list object_feature
- ;
-
-object_feature
- : argument_list_def SEMICOLON
- { sar_save_list_end ( &$2); sar_save_feature (&$1); $$ = gz_yynullval; }
- | callback_list_def SEMICOLON
- { sar_save_list_end ( &$2); sar_save_feature (&$1); $$ = gz_yynullval; }
- | control_list_def SEMICOLON
- { sar_save_list_end ( &$2); sar_save_feature (&$1);
-sar_update_parent_list (&$1); $$ = gz_yynullval; }
- | error { lex_issue_error (SEMICOLON); } SEMICOLON
- ;
-
-epsilon_production
- : /* empty */
- { $$ = gz_yynullval; }
- ;
-
-\f
-
-/* LIST declaration */
-
-list_declaration
- : LIST { $$ = $1; sar_save_section_source (&$1, sym_k_list_section); }
- list_decl_list
- ;
-
-list_decl_list
- : list_decl SEMICOLON { $$ = $1; sar_save_src_semicolon_pos (&$2 ); }
- | list_decl_list list_decl SEMICOLON { $$ = $1; sar_save_src_semicolon_pos (&$3 ); }
- | error { lex_issue_error (SEMICOLON); } SEMICOLON
- ;
-
-list_decl
- : id
- { sar_create_object (&$1, sym_k_list_entry);
-sar_link_section (&$1); $$ = gz_yynullval;}
- COLON list_specification
- { $$ = gz_yynullval; }
- ;
-
-list_specification
- : control_list_specification
- | argument_list_specification
- | callback_list_specification
- | procedure_list_specification
- ;
-
-control_list_specification
- : control_list_type
- { $$ = gz_yynullval; sar_set_list_type (&$1); }
- control_list_spec
- { sar_verify_object (&$1); }
- ;
-
-argument_list_specification
- : argument_list_type
- { $$ = gz_yynullval; sar_set_list_type (&$1); }
- argument_list_spec
- { sar_verify_object (&$1); }
- ;
-
-callback_list_specification
- : callback_list_type
- { $$ = gz_yynullval; sar_set_list_type (&$1); }
- callback_list_spec
- { sar_verify_object (&$1); }
- ;
-
-procedure_list_specification
- : procedure_list_type
- { $$ = gz_yynullval; sar_set_list_type (&$1); }
- procedure_list_spec
- { sar_verify_object (&$1); }
- ;
-
-argument_list_type
- : ARGUMENTS
- { $$ = gz_yynullval; $$.b_type = sym_k_argument_list; }
- ;
-
-callback_list_type
- : CALLBACKS
- { $$ = gz_yynullval; $$.b_type = sym_k_callback_list; }
- ;
-
-procedure_list_type
- : PROCEDURES
- { $$ = gz_yynullval; $$.b_type = sym_k_proc_ref_list; }
- ;
-control_list_type
- : CONTROLS
- { $$ = gz_yynullval; $$.b_type = sym_k_control_list; }
- ;
-
-argument_list_spec
- : id_ref { sar_object_reference (&$1); }
- | LEFT_BRACE RIGHT_BRACE
- | LEFT_BRACE argument_list_clause_list RIGHT_BRACE
- | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
- ;
-
-callback_list_spec
- : id_ref { sar_object_reference (&$1); }
- | LEFT_BRACE RIGHT_BRACE
- | LEFT_BRACE callback_list_clause_list RIGHT_BRACE
- | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
- ;
-
-procedure_list_spec
- : id_ref
- { sar_object_reference (&$1); }
- | LEFT_BRACE RIGHT_BRACE
- | LEFT_BRACE procedure_list_clause_list RIGHT_BRACE
- | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
- ;
-
-control_list_spec
- : id_ref { sar_object_reference (&$1); }
- | LEFT_BRACE RIGHT_BRACE
- | LEFT_BRACE control_list_clause_list RIGHT_BRACE
- | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
- ;
-
-argument_list_clause_list
- : argument_list_clause
- | argument_list_clause_list argument_list_clause
- ;
-
-callback_list_clause_list
- : callback_list_clause
- | callback_list_clause_list callback_list_clause
- ;
-
-procedure_list_clause_list
- : procedure_list_clause
- | procedure_list_clause_list procedure_list_clause
- ;
-
-control_list_clause_list
- : control_list_clause
- | control_list_clause_list control_list_clause
- ;
-
-argument_list_clause
- : argument_list_def SEMICOLON
- { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
- | argument_list_item SEMICOLON
- { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
- | error { lex_issue_error (SEMICOLON); } SEMICOLON
- ;
-
-callback_list_clause
- : callback_list_def SEMICOLON
- { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
- | callback_list_item SEMICOLON
- { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
- | error { lex_issue_error (SEMICOLON); } SEMICOLON
- ;
-
-procedure_list_clause
- : procedure_list_def SEMICOLON
- { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
- | procedure_list_def_ref SEMICOLON
- { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
- | error { lex_issue_error (SEMICOLON); } SEMICOLON
- ;
-
-control_list_clause
- : control_list_def SEMICOLON
- { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
- | control_list_item SEMICOLON
- { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
- | error { lex_issue_error (SEMICOLON); } SEMICOLON
- ;
-
-control_list_def
- : epsilon_production
- { $$ = gz_yynullval; sar_create_object (&$1, sym_k_list_entry); }
- control_list_specification
- { $$ = $1; }
- ;
-
-argument_list_def
- : epsilon_production
- { $$ = gz_yynullval; sar_create_object (&$1, sym_k_list_entry); }
- argument_list_specification
- { $$ = $1; }
- ;
-
-callback_list_def
- : epsilon_production
- { $$ = gz_yynullval; sar_create_object (&$1, sym_k_list_entry); }
- callback_list_specification
- { $$ = $1; }
- ;
-
-procedure_list_def
- : epsilon_production
- { $$ = gz_yynullval; sar_create_object (&$1, sym_k_list_entry); }
- procedure_list_specification
- { $$ = $1; }
- ;
-
-control_list_item
-
-/* Control item */
-
- : opt_managed control_item
- { sar_save_control_item (&$1, &$2); $$ = $1; }
-
- | id
- { sar_create_object (& $1, sym_k_widget_entry); $1.b_flags = sym_m_managed; $$ = gz_yynullval;}
- COLON
- control_object_definition
- { sar_save_control_widget (& $1, & $2); $$ = $1; }
-/* Child */
- | CHILD_NAME opt_child_managed
- { sar_create_child (& $1); $1.b_flags = sym_m_managed;
- $$ = gz_yynullval; }
- child_object_spec
- { sar_save_control_widget (& $1, & $2); $$ = $1; }
- | CHILD_NAME UNMANAGED
- { sar_create_child (& $1); $$ = gz_yynullval; }
- child_object_spec
- { sar_save_control_widget (& $1, & $3); $$ = $1; }
- ;
-
-opt_child_managed
- : epsilon_production
- | MANAGED
- ;
-
-
-argument_list_item
-
-/* Argument value pair */
-
- : value EQUAL_SIGN value
- { sar_save_argument_pair (&$1, &$3, &$2); $$ = $1; }
-
-/* Argument widget pair */
-
- | value EQUAL_SIGN CLASS_NAME id_ref
- { YYSTYPE temp [2];
- temp [0] = gz_yynullval;
- sar_create_object (&temp [0], sym_k_widget_entry);
- temp [1] = $3; sar_set_object_class (&temp [1]);
- temp [1] = $4; sar_object_reference (&temp [1]);
- sar_verify_object (&temp [1]);
- sar_save_argument_pair (&$1, &temp [0], &$2); $$ = $1; }
- ;
-
-callback_list_item
-
-/* Callback reason binding */
-
- : value EQUAL_SIGN procedure_reference
- { sar_save_reason_binding (&$1, &$3, &$2); $$ = $1; }
- | value EQUAL_SIGN procedure_list_def
- { sar_save_reason_binding (&$1, &$3, &$2); $$ = $1; }
- ;
-
-control_item
- : epsilon_production
- { sar_create_object (&$1, sym_k_widget_entry); $$ = gz_yynullval; }
- control_object_specification
- { $$ = $1; }
- ;
-
-opt_managed
- : epsilon_production
- { $$.b_flags = sym_m_managed; }
- | MANAGED
- { $$ = gz_yynullval; $$.b_flags = sym_m_managed; }
- | UNMANAGED
- { $$ = gz_yynullval; }
- ;
-
-procedure_reference
- : PROCEDURE id_ref opt_procedure_argument
- { sar_process_proc_ref (&$2, &$3, sym_k_callback_proc); $$ = $2; }
- ;
-
-procedure_list_def_ref
- : id_ref opt_procedure_argument
- { sar_process_proc_ref (&$1, &$2, sym_k_callback_proc); $$ = $1; }
- ;
-
-opt_procedure_argument
- : epsilon_production
- | LEFT_PAREN value RIGHT_PAREN
- { $$ = $2; }
- | LEFT_PAREN CLASS_NAME id_ref RIGHT_PAREN
- { YYSTYPE temp [2];
- temp [0] = gz_yynullval;
- sar_create_object (&temp [0], sym_k_widget_entry);
- temp [1] = $2; sar_set_object_class (&temp [1]);
- temp [1] = $3; sar_object_reference (&temp [1]);
- sar_verify_object (&temp [1]);
- $$ = temp [0]; }
- | LEFT_PAREN RIGHT_PAREN
- { $$ = gz_yynullval; }
- ;
-
-\f
-
-/* definition of an id */
-
-id
- : NAME
- | FONT_NAME
- | COLOR_NAME
- | ARGUMENT_NAME
- | REASON_NAME
- | ENUMVAL_NAME
- | CHILD_NAME
- | keyword { sar_map_keyword_to_name( &$$, &$1); }
- ;
-
-/* reference of an id */
-
-id_ref
- : id
- { sar_process_id_ref (&$1); $$ = $1; }
- ;
-
-keyword
- : STRING
- | BOOLEAN
- | FLOAT
- | INTEGER
- | FONT
- | ARGUMENT
- | REASON
- | PIXMAP
- | COLOR
-
- | NAMES
- | CASE_SENSITIVE
- | CASE_INSENSITIVE
-
- | VERSION
-
- | MANAGED
- | UNMANAGED
-
- | UILFILE
-
- | string_table_type
- | asciz_table_type
- | INTEGER_TABLE
- | TRANSLATION_TABLE
- | COMPOUND_STRING
- | COMPOUND_STRING_COMPONENT
- | CLASS_REC_NAME
- | FONT_TABLE
- | RIGHT_TO_LEFT
- | CHARACTER_SET
- | COLOR_TABLE
- | ICON
- | BACKGROUND
- | FOREGROUND
- | XBITMAPFILE
- | SEPARATE
-
- | ANY
-
- | IMPORTED
- | OBJECTS
- | KEYSYM
- | SINGLE_FLOAT
- | RGB
- | WIDE_CHARACTER
- | FONTSET
- ;
-
-\f
-
-/* values */
-
-character_8_value : value
- {
- $$ = $1;
- if (($$.b_type != sym_k_error_value) &&
- ($$.b_type != sym_k_any_value) &&
- (($$.b_flags &sym_m_forward_ref) == 0))
- {
- if (($$.b_type != sym_k_char_8_value) &&
- ($$.b_type != sym_k_localized_string_value))
- sar_value_type_error( &$$, sym_k_char_8_value );
- if (($$.b_flags &sym_m_private) == 0)
- sar_private_error( &$$ );
- }
- }
- ;
-
-private_value
- : value { $$ = $1;
- if ($$.b_type != sym_k_error_value)
- {
- if ((($$.b_flags &sym_m_private) == 0) &&
- (($$.b_flags &sym_m_forward_ref) == 0))
- sar_private_error( &$$ );
- }
- }
- ;
-
- /* BEGIN HaL fix CR 5427 */
-
- private_value_plus
- : non_export_value { $$ = $1;
- if ($$.b_type != sym_k_error_value)
- {
- if ((($$.b_flags &sym_m_private) == 0) &&
- (($$.b_flags &sym_m_forward_ref) == 0))
- sar_private_error( &$$ );
- }
- }
- ;
- | value { $$ = $1;
- if ($$.b_type != sym_k_error_value)
- {
- if ((($$.b_flags &sym_m_private) == 0) &&
- (($$.b_flags &sym_m_forward_ref) == 0))
- sar_private_error( &$$ );
- }
- }
-
- non_export_value
- : COLOR_TABLE LEFT_PAREN color_list RIGHT_PAREN { sar_make_color_table( &$$, &$3, &$1); }
-
- /* END HaL fix CR 5427 */
-
-
-value
- : value_1
- | value OR value_1 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
- | value XOR value_1 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
- ;
-
-value_1
- : value_2
- | value_1 AND value_2 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
- ;
-
-value_2
- : value_3
- | value_2 LEFT_SHIFT value_3 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
- | value_2 RIGHT_SHIFT value_3 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
- ;
-
-value_3
- : value_4
- | value_3 PLUS value_4 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
- | value_3 MINUS value_4 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
- ;
-
-value_4
- : value_5
- | value_4 MULTIPLY value_5 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
- | value_4 DIVIDE value_5 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
- ;
-
-value_5
- : value_6
- | MINUS value_5 { $$ = $1; sar_unary_op( &$$, &$2 ); }
- | NOT value_5 { $$ = $1; sar_unary_op( &$$, &$2 ); }
- | PLUS value_5 { $$ = $1; sar_unary_op( &$$, &$2 ); }
- ;
-
-value_6
- : operand
- | LEFT_PAREN value RIGHT_PAREN { $$ = $2; }
- ;
-
-operand
- : UNS_INT_LITERAL { sar_make_private_value( &$$, &$1, sym_k_integer_value,
- &$1, XmPIXELS); }
- | UNS_INT_LITERAL units_specification { sar_make_private_value( &$$, &$1, sym_k_integer_value,
- &$1, sar_get_units_type(&$2)); }
- | optional_charset CHAR_8_LITERAL { /* Don't use FALSE because it is a token not a Boolean! */
- Uil_lex_l_charset_specified = 0;
- sar_make_private_value( &$$, &$2, sym_k_char_8_value,
- &$2, 0); }
- | id { sar_process_id( &$$, &$1 );}
- | UNS_FLOAT_LITERAL { sar_make_private_value( &$$, &$1, sym_k_float_value,
- &$1, XmPIXELS); }
- | UNS_FLOAT_LITERAL units_specification { sar_make_private_value( &$$, &$1, sym_k_float_value,
- &$1, sar_get_units_type(&$2)); }
- | PIXMAP LEFT_PAREN character_8_value RIGHT_PAREN { sar_value_not_implemented( &$$, &$1, "pixmap literal" ); }
- | FONT LEFT_PAREN font_spec RIGHT_PAREN { $$ = $3; }
- | FONTSET LEFT_PAREN fontset_spec RIGHT_PAREN { $$ = $3; }
- | COLOR LEFT_PAREN color_spec RIGHT_PAREN { $$ = $3; }
- | REASON LEFT_PAREN character_8_value RIGHT_PAREN { sar_make_private_value(&$$, &$3, sym_k_reason_value,
- &$1, 0); }
- | CLASS_REC_NAME LEFT_PAREN character_8_value RIGHT_PAREN { sar_make_private_value(&$$, &$3, sym_k_class_rec_name_value,
- &$1, 0); }
- | ARGUMENT LEFT_PAREN character_8_value opt_arg_type RIGHT_PAREN
- { sar_make_private_value
- ( &$$, &$3, sym_k_argument_value, &$1, $4.b_type ); }
- | UILTRUE { sar_make_private_value( &$$, &$1, sym_k_bool_value,
- &$1, 0); }
- | UILFALSE { sar_make_private_value( &$$, &$1, sym_k_bool_value,
- &$1, 0); }
- | ON { sar_make_private_value( &$$, &$1, sym_k_bool_value,
- &$1, 0); }
- | OFF { sar_make_private_value( &$$, &$1, sym_k_bool_value,
- &$1, 0); }
- | optional_charset COMP_STRING { /* Don't use FALSE because it is a token not a Boolean! */
- Uil_lex_l_charset_specified = 0;
- sar_make_private_value
- ( &$$, &$2, sym_k_compound_string_value, &$2, 0); }
- | string_table_type LEFT_PAREN comp_str_list RIGHT_PAREN { sar_make_private_value( &$$, &$3, sym_k_string_table_value,
- &$1, 0); }
- | asciz_table_type LEFT_PAREN asciz_list RIGHT_PAREN { sar_make_private_value( &$$, &$3, sym_k_asciz_table_value,
- &$1, 0); }
- | INTEGER_TABLE LEFT_PAREN integer_list RIGHT_PAREN { sar_make_private_value( &$$, &$3, sym_k_integer_table_value,
- &$1, 0); }
- | TRANSLATION_TABLE LEFT_PAREN string_list RIGHT_PAREN { sar_make_private_value( &$$, &$3, sym_k_trans_table_value,
- &$1, 0); }
- | COMPOUND_STRING LEFT_PAREN comp_str_result RIGHT_PAREN { $$ = $3; }
- | COMPOUND_STRING_COMPONENT LEFT_PAREN comp_str_comp_result RIGHT_PAREN { $$ = $3; }
- | FONT_TABLE LEFT_PAREN font_list RIGHT_PAREN { $$ = $3; }
- | ICON LEFT_PAREN icon_spec RIGHT_PAREN { $$ = $3; }
- | FLOAT LEFT_PAREN value RIGHT_PAREN { $$ = $1; sar_unary_op( &$$, &$3 ); }
- | INTEGER LEFT_PAREN value RIGHT_PAREN { $$ = $1; sar_unary_op( &$$, &$3 ); }
-
- | XBITMAPFILE LEFT_PAREN character_8_value RIGHT_PAREN { sar_make_private_value(&$$, &$3, sym_k_xbitmapfile_value,
- &$1, 0); }
-
- | KEYSYM LEFT_PAREN character_8_value RIGHT_PAREN { sar_make_private_value(&$$, &$3, sym_k_keysym_value,
- &$1, 0); }
-
- | SINGLE_FLOAT LEFT_PAREN value RIGHT_PAREN { $$ = $1; sar_unary_op( &$$, &$3 ); }
-
- | RGB LEFT_PAREN rgb_list RIGHT_PAREN { sar_make_private_value( & $$, & $3, sym_k_rgb_value,
- &$1, 0); }
- | WIDE_CHARACTER LEFT_PAREN wchar_str_result RIGHT_PAREN { $$ = $3; }
- | LOC_STRING { sar_make_private_value(&$$, &$1, sym_k_localized_string_value,
- &$1, 0); }
- ;
-
-string_list
- : /* empty */
- { $$ = gz_yynullval; }
- | string_list_2
- { $$ = $1; }
- ;
-
-string_list_2
- : private_value
- { sar_append_table_value (&$1, &gz_yynullval, sym_k_trans_table_value, &$1); $$ = $1; }
- | string_list_2 COMMA private_value
- { sar_append_table_value (&$3, &$1, sym_k_trans_table_value, &$2); $$ = $3; }
- ;
-
-asciz_list
- : /* empty */
- { $$ = gz_yynullval; }
- | asciz_list_2
- { $$ = $1; }
- ;
-
-asciz_list_2
- : private_value
- { sar_append_table_value (&$1, &gz_yynullval, sym_k_asciz_table_value, &$1); $$ = $1; }
- | asciz_list_2 COMMA private_value
- { sar_append_table_value (&$3, &$1, sym_k_asciz_table_value, &$2); $$ = $3; }
- ;
-
-integer_list
- : /* empty */
- { $$ = gz_yynullval; }
- | integer_list_2
- { $$ = $1; }
- ;
-
-integer_list_2
- : private_value
- { sar_append_table_value (&$1, &gz_yynullval, sym_k_integer_table_value, &$1); $$ = $1; }
- | integer_list_2 COMMA private_value
- { sar_append_table_value (&$3, &$1, sym_k_integer_table_value, &$2); $$ = $3; }
- ;
-
-/* RAP rgb data type */
-rgb_list
- : private_value COMMA private_value COMMA private_value
-{sar_append_table_value(&$1, & gz_yynullval, sym_k_integer_table_value, & $1);
- sar_append_table_value(& $3, & $1, sym_k_integer_table_value, & $2);
- sar_append_table_value(& $5, & $3, sym_k_integer_table_value, & $4);
- $$ = $5;}
- ;
-
-
-comp_str_list
- : /* empty */
- { $$ = gz_yynullval; }
- | comp_str_list_2
- { $$ = $1; }
- ;
-
-comp_str_list_2
- : private_value
- { sar_append_table_value (&$1, &gz_yynullval, sym_k_string_table_value, &$1); $$ = $1; }
- | comp_str_list_2 COMMA private_value
- { sar_append_table_value (&$3, &$1, sym_k_string_table_value, &$2); $$ = $3; }
- ;
-
-opt_arg_type
- : /* empty */ { $$ = gz_yynullval; $$.b_type = sym_k_any_value; }
- | COMMA arg_value_type { $$ = gz_yynullval; $$.b_type = $2.b_type; }
- | COMMA ANY { $$ = gz_yynullval; $$.b_type = sym_k_any_value; }
- ;
-
-comp_str_result
- : private_value { sar_make_comp_str( &$$, &$1, &gz_yynullval, &$-1 ); }
- | private_value comp_str_attrs { sar_make_comp_str( &$$, &$1, &$2, &$-1 ); }
- ;
-
-comp_str_comp_result
- : ENUMVAL_NAME { sar_make_comp_str_comp(&$$, &$1, &gz_yynullval, &$-1 ); }
- | ENUMVAL_NAME COMMA ENUMVAL_NAME { sar_make_comp_str_comp( &$$, &$1, &$3, &$-1 ); }
- | ENUMVAL_NAME COMMA CHAR_8_LITERAL { sar_make_comp_str_comp( &$$, &$1, &$3, &$-1 ); }
- | ENUMVAL_NAME COMMA LOC_STRING { sar_make_comp_str_comp( &$$, &$1, &$3, &$-1 ); }
- | ENUMVAL_NAME COMMA CHARSET_NAME { sar_make_comp_str_comp( &$$, &$1, &$3, &$-1 ); }
- ;
-
-comp_str_attrs
- : COMMA comp_str_attr { sar_chk_comp_str_attr( &$$, &$2, &gz_yynullval ); }
- | comp_str_attrs COMMA comp_str_attr { sar_chk_comp_str_attr( &$$, &$3, &$1 ); }
- ;
-
-comp_str_attr
- : CHARACTER_SET EQUAL_SIGN valid_charset { $$.b_type = $1.b_type;
- $$.b_tag = $3.b_tag;
- $$.value.az_keyword_entry = $3.value.az_keyword_entry;
- $$.value.az_symbol_entry = $3.value.az_symbol_entry; }
- | RIGHT_TO_LEFT EQUAL_SIGN private_value { $$.b_type = $1.b_type;
- $$.value.az_symbol_entry = $3.value.az_symbol_entry; }
- | SEPARATE EQUAL_SIGN private_value { $$.b_type = $1.b_type;
- $$.value.az_symbol_entry = $3.value.az_symbol_entry; }
- ;
-
-wchar_str_result
- : private_value { sar_make_wchar_str( &$$, &$1, &gz_yynullval, &$-1 ); }
- ;
-
-font_spec
- : character_8_value COMMA CHARACTER_SET EQUAL_SIGN valid_charset
- { sar_make_font( &$$, &$5, &$1, &$-1 ); }
- | character_8_value { sar_make_font( &$$, &gz_yynullval, &$1, &$-1 ); }
- ;
-
-fontset_spec
- : character_8_value COMMA CHARACTER_SET EQUAL_SIGN valid_charset
- { sar_make_fontset( &$$, &$5, &$1, &$-1 ); }
- | character_8_value { sar_make_fontset( &$$, &gz_yynullval, &$1, &$-1 ); }
- ;
-
-font_list
- : font_item { sar_make_font_table( &$$, &$1, &gz_yynullval, &$-1 ); }
- | font_list COMMA font_item { sar_make_font_table( &$$, &$3, &$1, &$-1 ); }
- ;
-
-/*
-** THIS PRODUCTION DOESN'T LOOK RIGHT!!!!!!!!!!!!!!!!!!!!!!
-*/
-font_item
- : valid_charset EQUAL_SIGN private_value { sar_make_font_item( &$$, &$1, &$3 ); }
- | private_value { sar_make_font_item( &$$, &gz_yynullval, &$1 ); }
- ;
-
-optional_charset
- : POUND valid_charset { /* Don't use TRUE because it is a token not a Boolean! */
- $$ = $2;
- Uil_lex_l_charset_specified = 1;}
- | epsilon_production
- ;
-
-
-valid_charset
- : CHARSET_NAME { sar_charset_verify (&$1); $$ = $1; }
- | CHARACTER_SET LEFT_PAREN charset_info RIGHT_PAREN { $$ = $3; }
- | NAME { sar_make_fallback_charset(&$1);
- $$ = $1; }
-
- ;
-
-charset_info
- : character_8_value { sar_make_private_value(&$$, &$1, sym_k_char_8_value,
- &$1, 0);
- sar_make_charset (&$$, &$$, &gz_yynullval, &$1); }
- | character_8_value charset_attrs { sar_make_private_value(&$$, &$1, sym_k_char_8_value,
- &$1, 0);
- sar_make_charset (&$$, &$$, &$2, &$1); }
- ;
-
-charset_attrs
- : COMMA charset_attr { sar_chk_charset_attr( &$$, &$2, &gz_yynullval ); }
- | charset_attrs COMMA charset_attr { sar_chk_charset_attr( &$$, &$3, &$1 ); }
- ;
-
-charset_attr
- : RIGHT_TO_LEFT EQUAL_SIGN private_value { $$.b_type = $1.b_type;
- if ($3.b_type != sym_k_bool_value)
- sar_value_type_error( &$3, sym_k_bool_value );
- $$.value.az_symbol_entry = $3.value.az_symbol_entry; }
- | SIXTEEN_BIT EQUAL_SIGN private_value { $$.b_type = $1.b_type;
- if ($3.b_type != sym_k_bool_value)
- sar_value_type_error( &$3, sym_k_bool_value );
- $$.value.az_symbol_entry = $3.value.az_symbol_entry; }
- ;
-
-color_list
- : color_item { sar_append_color_item( &$$, &$1, &gz_yynullval ); }
- | color_list COMMA color_item { sar_append_color_item( &$$, &$3, &$1 ); }
- ;
-
-color_item
- : BACKGROUND COLOR EQUAL_SIGN character_8_value { sar_make_color_item( &$$, &$1, &$4 ); }
- | FOREGROUND COLOR EQUAL_SIGN character_8_value { sar_make_color_item( &$$, &$1, &$4 ); }
- | value EQUAL_SIGN character_8_value { sar_make_color_item( &$$, &$1, &$3 ); }
- ;
-
-color_spec
- : character_8_value { sar_make_color( &$$, &$1, &gz_yynullval, &$-1 ); }
- | character_8_value COMMA mono_color_spec { sar_make_color( &$$, &$1, &$3, &$-1 ); }
- ;
-
-mono_color_spec
- : BACKGROUND
- | FOREGROUND
- ;
-
-icon_spec
- : icon_rows { sar_make_icon( &$$, &$1, &gz_yynullval, &$-1); }
- | COLOR_TABLE EQUAL_SIGN private_value COMMA icon_rows
- { sar_make_icon( &$$, &$5, &$3, &$-1 ); }
- ;
-
-icon_rows
- : private_value
- { sar_append_table_value (&$1, &gz_yynullval, sym_k_icon_value, &$1); $$ = $1; }
- | icon_rows COMMA private_value
- { sar_append_table_value (&$3, &$1, sym_k_icon_value, &$2); $$ = $3; }
- ;
-
-units_specification
- : PIX
- { $$ = $1; }
- | PIXEL
- { $$ = $1; }
- | PIXELS
- { $$ = $1; }
- | IN
- { $$ = $1; }
- | INCH
- { $$ = $1; }
- | INCHES
- { $$ = $1; }
- | CM
- { $$ = $1; }
- | CENTIMETER
- { $$ = $1; }
- | CENTIMETERS
- { $$ = $1; }
- | MM
- { $$ = $1; }
- | MILLIMETER
- { $$ = $1; }
- | MILLIMETERS
- { $$ = $1; }
- | PT
- { $$ = $1; }
- | POINT
- { $$ = $1; }
- | POINTS
- { $$ = $1; }
- | FU
- { $$ = $1; }
- | FONT_UNIT
- { $$ = $1; }
- | FONT_UNITS
- { $$ = $1; }
- ;
-
-%%
-
-/* Dummy error routine for the parser. We will output our own
- error messages. */
-
-int yyerror (s)
-char * s;
-{
- return 0;
-}
-
-
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: UilDBDef.h /main/8 1995/07/13 21:03:16 drk $ */
-
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
-**++
-** FACILITY:
-**
-** User Interface Language Compiler (UIL)
-**
-** ABSTRACT:
-**
-** This include file defines the interfaces necessry to the binary
-** data base in the WML & UIL compilers.
-**
-**--
-**/
-
-#ifndef UilDBDef_h
-#define UilDBDef_h
-
-/***********************************************************************
-****************** From UilDef.h ***************************************/
-#define _BIT_INDEX(_type) \
- (((unsigned int) (_type)) >> 3)
-
-#define _BIT_MASK(_type) \
- (1 << (((unsigned int) (_type)) & 0x7))
-
-#define _BIT_SET(table_entry_addr, _type) \
- ( _BIT_MASK (_type) & \
- ( ((unsigned char *) (table_entry_addr)) \
- [ _BIT_INDEX (_type) ] ) )
-
-/*******************************************************************
-**************** From UilSymDef.h *********************************/
-/*
-** Hash table size
-*/
-
-#define sym_k_hash_table_limit 127
-
-/*
-** Symbol tags. These values are used in the tag field of every object header
-** to identify the type of the entry.
-*/
-
-#define sym_k_error_entry (127)
- /* An error entry is used when compilation errors are detected in the */
- /* source program. Its use reduces cascading errors caused by missing */
- /* information and allows the compilation to continue and thus */
- /* additional errors may be detected */
-#define sym_k_value_entry 1
- /* A value entry contains information about a UIL literal value */
- /* (integer, string, compound string, xbitmapfile, argument, color, */
- /* icon, etc.). The b_type field is used to determine the datatype of */
- /* this value. */
-#define sym_k_name_entry 2
- /* A name entry corresponds to a name (identifier) used in the UIL */
- /* source. */
-#define sym_k_widget_entry 3
- /* A widget entry represents a widget declaration. It points off to */
- /* the arguments, callbacks, and controls lists for the widget. */
-#define sym_k_control_entry 4
- /* A control entry hangs off a list entry and identifes an object */
- /* (widget or gadget) that is controlled. It also contains the */
- /* managed/unmanaged information. */
-#define sym_k_forward_ref_entry 5
- /* forward reference entries are a linked listed of objects */
- /* (widgets/gadgets) that were not defined at the time of the */
- /* reference. After all objects have been seen, then this list is */
- /* traversed and all objects in it should now be defined and the */
- /* specified pointers can be filled-in. */
-#define sym_k_external_def_entry 6
- /* An external definition entry identifies a name that has been */
- /* imported and thus in not declared within this source module. */
-#define sym_k_argument_entry 7
- /* An argument entry hangs off a list entry and identifies an object */
- /* argument. It contains informtation about the argument name and */
- /* argument value. */
-#define sym_k_callback_entry 8
- /* An calllback entry hangs off a list entry and identifies an object */
- /* callback. It contains informtation about the callback name, */
- /* callback procedure, and callback tag. */
-#define sym_k_module_entry 9
- /* A module entry contains information specified on the module */
- /* statement. */
-#define sym_k_proc_def_entry 10
- /* A procedure definition entry is created for each procedure listed */
- /* in a procedure section. I contains informaion on the number and */
- /* types of the arguments. */
-
-#define sym_k_proc_ref_entry 11
- /* A procedure reference entry contains information about a the use of */
- /* a procedure (e.g. as a callback). It also stores the tag to be */
- /* passed to the procedure. */
-#define sym_k_list_entry 12
- /* A list entry is a typed list of other symbol table entries. It */
- /* contains a count and a pointer to the next entry on the list via */
- /* the obj_header.az_next field. */
-#define sym_k_child_entry 13
- /* A child entry represents a declaration for an */
- /* automatically created child. It points off to */
- /* the arguments, callbacks, and controls lists for the child. Since */
- /* the structures for widget and child are the same, the */
- /* datastructure for children is really a sym_k_widget_entry_type. */
-#define sym_k_identifier_entry 14
- /* identifier entry tag is used for diagnostic messages only */
-#define sym_k_color_item_entry 15
- /* entry describing a color. */
-#define sym_k_gadget_entry 16
- /* A gadget entry represents a gadget declaration. It points off to */
- /* the arguments, callbacks, and controls lists for the gadget. Since */
- /* the structures for widget and gadgets are the same, the */
- /* datastructure for gadgets is really a sym_k_widget_entry_type. */
-#define sym_k_root_entry 17
- /* An entry used to group all the other entries together. It is */
- /* returned in the parse_tree_root field of the compilation descriptor */
- /* when using the callable interface. */
-#define sym_k_parent_list_entry 18
- /* This is a list of parents of a widget. It is used to check for */
- /* constraints provided by the parent that may be used on this widget. */
-#define sym_k_nested_list_entry 19
- /* This entry occurs as a list entry for a nested list. It occupies */
- /* the correct position in the list for the reference to a list, and */
- /* points to the actual list entry. */
-#define sym_k_include_file_entry 20
- /* An include file entry is used to describe the contents of an */
- /* include file. It is needed only maintain information about the */
- /* source file from which this parse tree was generated. It is not */
- /* used by UIL directly. */
-#define sym_k_section_entry 21
- /* A section entry is used to describe the contents of an source file. */
- /* It is needed only maintain information about the structure of */
- /* source file from which this parse tree was generated. It is not */
- /* used by UIL directly. */
- /* */
-#define sym_k_def_obj_entry 22
- /* This entry corresponds to the default object clause on the module */
- /* declaration it is used to store source information about the file */
- /* from which this parse tree was generated. It is not used by UIL */
- /* directly. */
-#define sym_k_UNUSED23_entry 23
-#define sym_k_val_forward_ref_entry 24
- /* val forward reference entries are a linked listed of values */
- /* that were not defined at the time of the */
- /* reference. After all values have been seen, then this list is */
- /* traversed and all values in it should now be defined and the */
- /* specified pointers can be filled-in. */
-#define sym_k_max_entry 24
- /* this is the largest possible value for an entry constant. */
-
-
-/*
-** Common attribute masks -- These values are used in the b_flags field of
-** the object_header.
-*/
-
-#define sym_m_private (1 << 0)
- /* This item is private to this source module and thus need not be */
- /* output into the UID file. */
-#define sym_m_exported (1 << 1)
- /* This is an exported definition and must be put in the UID file. */
-#define sym_m_imported (1 << 2)
- /* This item is a reference external to this source module and thus */
- /* will be resolved at runtime by searching the resourec hierarchy. */
-#define sym_m_reference (1 << 3)
-#define sym_m_builtin (1 << 4)
- /* This item is builtin as oppose to a userdefined item. */
-#define sym_m_obj_is_gadget (1 << 5)
- /* This object is a gadget as oppose to a widget. */
-
-
-/*
-** Output states - order is important
-*/
-
-#define sym_k_not_processed 0
-#define sym_k_queued 1
-#define sym_k_emitted 2
-
-
-\f
-/*
-** Constants to define compiler-recognized data types. It is
-** important that the names used in .wml language descriptions
-** match these names. These values were once automatically generated
-** by WML. They are now maintained by hand to reduce compiler
-** dependence on WML artifacts.
-**
-** We have also separated the values loosely into two classes:
-** values which can be used to verify operator legality and values
-** which cannot (see UilSemVal.c -- the legal_operand_type table).
-** There is a comment below denoting where the separation is. Any
-** values above the comment may be used for validation of an operator
-** while any values below may not.
-**
-** The order of the values below is unimportant except that the
-** entries in the uil_datatype_names table in UilData.c must be
-** ordered the same way.
-*/
-#define sym_k_any_value 1
-#define sym_k_bool_value 2
-#define sym_k_char_8_value 3
-#define sym_k_compound_string_value 4
-#define sym_k_float_value 5
-#define sym_k_integer_value 6
-#define sym_k_single_float_value 7
-#define sym_k_localized_string_value 8
-#define sym_k_wchar_string_value 9
-#define sym_k_horizontal_integer_value 10
-#define sym_k_vertical_integer_value 11
-#define sym_k_horizontal_float_value 12
-#define sym_k_vertical_float_value 13
-/* Values after here may not be used for operator argument validation */
-#define sym_k_argument_value 14
-#define sym_k_asciz_table_value 15
-#define sym_k_class_rec_name_value 16
-#define sym_k_color_value 17
-#define sym_k_color_table_value 18
-#define sym_k_font_value 19
-#define sym_k_font_table_value 20
-#define sym_k_icon_value 21
-#define sym_k_identifier_value 22
-#define sym_k_integer_table_value 23
-#define sym_k_keysym_value 24
-#define sym_k_pixmap_value 25
-#define sym_k_reason_value 26
-#define sym_k_rgb_value 27
-#define sym_k_string_table_value 28
-#define sym_k_trans_table_value 29
-#define sym_k_widget_ref_value 30
-#define sym_k_xbitmapfile_value 31
-#define sym_k_fontset_value 32
-#define sym_k_child_value 33
-#define sym_k_max_value 33
-#define sym_k_no_value (sym_k_max_value+1)
-
-/*
- * Error values for all kind of sym_k_... literal set
- */
-#define sym_k_error_value 0
-#define sym_k_error_object 0
-#define sym_k_error_charset 0
-
-
-/*
- * Literals associated with character sets
- *
- * Character set character sizes
- */
-#define sym_k_onebyte_charsize 1
-#define sym_k_twobyte_charsize 2
-#define sym_k_mixed1_2byte_charsize 3
-
-/*
- * User-defined character set
- */
-#define sym_k_userdefined_charset 1
-
-/*
- * XmFONTLIST_DEFAULT_TAG
- */
-#define sym_k_fontlist_default_tag 0
-
-/*
-** value sets defining expression operators
-*/
-#define sym_k_unspecified_op 0
-#define sym_k_not_op 1
-#define sym_k_unary_plus_op 2
-#define sym_k_unary_minus_op 3
-#define sym_k_comp_str_op 4
-#define sym_k_wchar_str_op 5
-#define sym_k_last_unary_op 5
-
-#define sym_k_multiply_op 6
-#define sym_k_divide_op 7
-#define sym_k_add_op 8
-#define sym_k_subtract_op 9
-#define sym_k_left_shift_op 10
-#define sym_k_right_shift_op 11
-#define sym_k_and_op 12
-#define sym_k_xor_op 13
-#define sym_k_or_op 14
-#define sym_k_cat_op 15
-#define sym_k_last_binary_op 15
-#define sym_k_valref_op 16 /* az_exp_op1 points to the value node
- whose value is referenced by this
- value node. */
-#define sym_k_coerce_op 17 /* az_exp_op1 points to the value node
- whose value is to be coerced to the
- data type of this node. */
-#define sym_k_last_special_op 17
-
-/*
- * Structure of an enumeration set entry
- */
-typedef struct
- {
- short int values_cnt;
- /* number of values in the enuemration set descriptor */
- unsigned short int *values;
- /* vector of values */
- } UilEnumSetDescDef, *UilEnumSetDescDefPtr;
-
-
-
-/**********************************************************************
-**************** From UilKeyDef.h ************************************/
-/*
- * Token class literals
- */
-#define tkn_k_class_argument 1
-#define tkn_k_class_charset 2
-#define tkn_k_class_color 3
-#define tkn_k_class_enumval 4
-#define tkn_k_class_font 5
-#define tkn_k_class_identifier 6
-#define tkn_k_class_keyword 7
-#define tkn_k_class_literal 8
-#define tkn_k_class_reason 9
-#define tkn_k_class_reserved 10
-#define tkn_k_class_special 11
-#define tkn_k_class_unused 12
-#define tkn_k_class_class 13
-#define tkn_k_class_child 14
-
-/*
- * Keyword table entry structure
- */
-typedef struct
- {
- unsigned char b_class;
- unsigned short int b_subclass;
- unsigned char b_length;
- unsigned char b_token;
- char *at_name;
- } key_keytable_entry_type;
-
-
-
-/*************************************************************************
-************************ New Stuff **************************************/
-
-/* For COMPOUND_STRING_COMPONENT */
-#define XmStringComponent "XmStringComponent"
-
-/*
- * Names of the tables put in the binary database
-*/
-
-#define Constraint_Tab 1
-#define Key_Table 2
-#define Key_Table_Case_Ins 3
-#define Allowed_Argument_Table 4
-#define Argument_Type_Table_Value 5
-#define Charset_Xmstring_Names_Table 6
-#define Charset_Wrdirection_Table 7
-#define Charset_Parsdirection_Table 8
-#define Charset_Charsize_Table 9
-#define Charset_Lang_Names_Table 10
-#define Charset_Lang_Codes_Table 11
-#define Allowed_Control_Table 12
-#define Enum_Set_Table 13
-#define Argument_Enum_Set_Table 14
-#define Enumval_Values_Table 15
-#define Uil_Widget_Names 16
-#define Uil_Argument_Names 17
-#define Uil_Reason_Names 18
-#define Uil_Enumval_names 19
-#define Uil_Charset_Names 20
-#define Related_Argument_Table 21
-#define Allowed_Reason_Table 22
-#define Uil_Widget_Funcs 23
-#define Uil_Gadget_Funcs 24
-#define Uil_Urm_Nondialog_Class 25
-#define Uil_Urm_Subtree_Resource 26
-#define Uil_Argument_Toolkit_Names 27
-#define Uil_Reason_Toolkit_Names 28
-#define Child_Class_Table 29
-#define Allowed_Child_Table 30
-#define Uil_Children_Names 31
-
-/*
- * Binary Data Base Work
- */
-#define DB_Compiled_Version 2
-
-typedef struct _db_globals_struct
-{
- int version;
- int uil_max_arg;
- int uil_max_charset;
- int charset_lang_table_max;
- int uil_max_object;
- int uil_max_reason;
- int uil_max_enumval;
- int uil_max_enumset;
- int key_k_keyword_count;
- int key_k_keyword_max_length;
- int uil_max_child;
-} _db_globals;
-
-typedef struct _db_header_struct
-{
- int table_id;
- int num_items;
- int table_size;
-} _db_header, *_db_header_ptr;
-
-
-#endif /* UilDBDef_h */
-/* DON'T ADD STUFF AFTER THIS #endif */
+++ /dev/null
-! @OSF_COPYRIGHT@
-! COPYRIGHT NOTICE
-! Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-! ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-! the full copyright text.
-!
-! HISTORY
-
-!
-! This file defines the Motif UIL language
-!
-
-!
-! UIL data types
-!
-DataType
- integer;
- string { InternalLiteral = char_8; };
- boolean { InternalLiteral = bool; };
- pixmap;
- float;
- font;
- translation_table
- { InternalLiteral = trans_table;
- DocName = "translation table";};
- widget_ref { DocName = "widget reference"; };
- any;
- color;
- compound_string { DocName = "compound string"; };
- string_table { DocName = "string table"; };
- font_table { DocName = "font table"; };
- icon;
- color_table { DocName = "color table"; };
- class_rec_name { DocName = "class record name"; };
- argument;
- reason;
- identifier;
- asciz_table { DocName = "asciz table"; };
- integer_table { DocName = "integer table"; };
- xbitmapfile { DocName = "X bitmap file"; };
- single_float { DocName = "Single float"; };
- keysym;
- rgb;
- localized_string
- { DocName = "localized string"; };
- wide_character { InternalLiteral = wchar_string;
- DocName = "wide character string"; };
- fontset;
- horizontal_integer;
- vertical_integer;
- horizontal_float;
- vertical_float;
-\f
-!
-! UIL character sets
-!
-CharacterSet
- iso_latin1
- { XmStringCharsetName = "ISO8859-1";
- Alias = "ISOLatin1";
- Alias = "88591";
- Alias = "ASCII"; };
- iso_latin2
- { XmStringCharsetName = "ISO8859-2";
- Alias = "ISOLatin2";
- Alias = "88592"; };
- iso_latin3
- { XmStringCharsetName = "ISO8859-3";
- Alias = "ISOLatin3";
- Alias = "88593"; };
- iso_latin4
- { XmStringCharsetName = "ISO8859-4";
- Alias = "ISOLatin4";
- Alias = "88594"; };
- iso_latin5
- { XmStringCharsetName = "ISO8859-5";
- Alias = "ISOLatin5";
- Alias = "88595"; };
- iso_cyrillic
- { XmStringCharsetName = "ISO8859-5"; };
- iso_arabic
- { XmStringCharsetName = "ISO8859-6";
- Alias = "iso_latin6";
- Alias = "ISOLatin6";
- Alias = "88596";
- Direction = RightToLeft; };
- iso_arabic_lr
- { XmStringCharsetName = "ISO8859-6";
- Alias = "iso_latin6_lr";
- Direction = RightToLeft;
- ParseDirection = LeftToRight; };
- iso_greek
- { XmStringCharsetName = "ISO8859-7";
- Alias = "iso_latin7";
- Alias = "ISOLatin7";
- Alias = "88597"; };
- iso_hebrew
- { XmStringCharsetName = "ISO8859-8";
- Alias = "iso_latin8";
- Alias = "ISOLatin8";
- Alias = "88598";
- Direction = RightToLeft; };
- iso_hebrew_lr
- { XmStringCharsetName = "ISO8859-8";
- Alias = "iso_latin8_lr";
- Direction = RightToLeft;
- ParseDirection = LeftToRight; };
- jis_katakana
- { XmStringCharsetName = "JISX0201.1976-0"; };
- euc
- { XmStringCharsetName = ""; };
- big5
- { XmStringCharsetName = ""; };
- gb_hanzi
- { XmStringCharsetName = "GB2312.1980-0";
- Alias = "gb_chinese";
- Alias = "gb_hanzi_gl";
- CharacterSize = TwoByte; };
- jis_kanji
- { XmStringCharsetName = "JISX0208.1983-0";
- Alias = "jis_japanese";
- Alias = "jis_kanji_gl";
- CharacterSize = TwoByte; };
- ksc_hangul
- { XmStringCharsetName = "KSC5601.1987-0";
- Alias = "ksc_korean";
- Alias = "ksc_hangul_gl";
- CharacterSize = TwoByte; };
- gb_hanzi_gr
- { XmStringCharsetName = "GB2312.1980-1";
- CharacterSize = TwoByte; };
- jis_kanji_gr
- { XmStringCharsetName = "JISX0208.1983-1";
- CharacterSize = TwoByte; };
- ksc_hangul_gr
- { XmStringCharsetName = "KSC5601.1987-1";
- CharacterSize = TwoByte; };
- XmFONTLIST_DEFAULT_TAG
- { FontListElementTag = XmFONTLIST_DEFAULT_TAG; };
-
- _MOTIF_DEFAULT_LOCALE
- { FontListElementTag = _MOTIF_DEFAULT_LOCALE; };
-\f
-!
-! UIL Enumeration Sets
-!
-EnumerationSet
- ! This is here to insure that uil compiles correctly because
- ! of dependencies introduced with boolean -> enum resources
- BoolValues : integer
- { FALSE; TRUE; };
- ArrowDirection : integer
- { XmARROW_UP; XmARROW_DOWN; XmARROW_LEFT; XmARROW_RIGHT; };
- ResizePolicy : integer
- { XmRESIZE_NONE; XmRESIZE_ANY; XmRESIZE_GROW; };
- DialogStyle : integer
- { XmDIALOG_SYSTEM_MODAL; XmDIALOG_PRIMARY_APPLICATION_MODAL;
- XmDIALOG_MODELESS; XmDIALOG_WORK_AREA;
- XmDIALOG_FULL_APPLICATION_MODAL; XmDIALOG_APPLICATION_MODAL; };
- DialogType : integer
- { XmDIALOG_PROMPT; XmDIALOG_SELECTION;
- XmDIALOG_WORK_AREA; XmDIALOG_FILE_SELECTION;
- XmDIALOG_ERROR; XmDIALOG_INFORMATION; XmDIALOG_MESSAGE;
- XmDIALOG_QUESTION; XmDIALOG_WARNING; XmDIALOG_WORKING;
- XmDIALOG_TEMPLATE; XmDIALOG_COMMAND; };
- ShadowType : integer
- { XmSHADOW_IN; XmSHADOW_OUT;
- XmSHADOW_ETCHED_IN; XmSHADOW_ETCHED_OUT; };
- LabelType : integer
- { XmSTRING; XmPIXMAP; };
- StringDirection : integer
- { XmSTRING_DIRECTION_L_TO_R; XmSTRING_DIRECTION_R_TO_L; };
- Alignment : integer
- { XmALIGNMENT_CENTER; XmALIGNMENT_END; XmALIGNMENT_BEGINNING; };
- Attachment : integer
- { XmATTACH_NONE; XmATTACH_FORM; XmATTACH_OPPOSITE_FORM;
- XmATTACH_WIDGET; XmATTACH_OPPOSITE_WIDGET;
- XmATTACH_POSITION; XmATTACH_SELF; };
- SelectionPolicy : integer
- { XmSINGLE_SELECT; XmMULTIPLE_SELECT;
- XmEXTENDED_SELECT; XmBROWSE_SELECT; };
- ScrollingPolicy : integer
- { XmAUTOMATIC; XmAPPLICATION_DEFINED; };
- ScrollBarPlacement : integer
- { XmTOP_LEFT; XmBOTTOM_LEFT; XmTOP_RIGHT; XmBOTTOM_RIGHT; };
- ScrollBarDisplayPolicy : integer
- { XmAS_NEEDED; XmSTATIC; };
- ListSizePolicy : integer
- { XmCONSTANT; XmVARIABLE; XmRESIZE_IF_POSSIBLE; };
- VisualPolicy : integer
- { XmVARIABLE; XmCONSTANT; };
- DefaultButtonType : integer
- { XmDIALOG_CANCEL_BUTTON; XmDIALOG_DEFAULT_BUTTON;
- XmDIALOG_HELP_BUTTON; XmDIALOG_MESSAGE_LABEL;
- XmDIALOG_OK_BUTTON; XmDIALOG_SEPARATOR;
- XmDIALOG_SYMBOL_LABEL; };
- RowColumnType : integer
- { XmWORK_AREA; XmMENU_BAR; XmMENU_PULLDOWN;
- XmMENU_POPUP; XmMENU_OPTION; };
- Packing : integer
- { XmNO_PACKING; XmPACK_TIGHT; XmPACK_COLUMN; XmPACK_NONE; };
- Orientation : integer
- { XmNO_ORIENTATION; XmVERTICAL; XmHORIZONTAL; };
- ProcessingDirection : integer
- { XmMAX_ON_TOP; XmMAX_ON_BOTTOM; XmMAX_ON_LEFT; XmMAX_ON_RIGHT; };
- SeparatorType : integer
- { XmSINGLE_LINE; XmDOUBLE_LINE;
- XmSINGLE_DASHED_LINE; XmDOUBLE_DASHED_LINE;
- XmNO_LINE; XmSHADOW_ETCHED_IN; XmSHADOW_ETCHED_OUT;
- XmSHADOW_ETCHED_IN_DASH; XmSHADOW_ETCHED_OUT_DASH;};
- EditMode : integer
- { XmSINGLE_LINE_EDIT; XmMULTI_LINE_EDIT; };
- IndicatorType : integer
- { XmN_OF_MANY; XmONE_OF_MANY;
- XmONE_OF_MANY_ROUND; XmONE_OF_MANY_DIAMOND; };
- ToggleIndicatorOn : integer
- { XmINDICATOR_NONE; XmINDICATOR_FILL; XmINDICATOR_BOX;
- XmINDICATOR_CHECK; XmINDICATOR_CHECK_BOX;
- XmINDICATOR_CROSS; XmINDICATOR_CROSS_BOX;
- FALSE; TRUE;};
- UnitType : integer
- { XmPIXELS; Xm100TH_MILLIMETERS; Xm1000TH_INCHES;
- Xm100TH_POINTS; Xm100TH_FONT_UNITS; XmINCHES;
- XmCENTIMETERS; XmMILLIMETERS; XmPOINTS; XmFONT_UNITS; };
- NavigationType : integer
- { XmNONE; XmTAB_GROUP; XmSTICKY_TAB_GROUP;
- XmEXCLUSIVE_TAB_GROUP; };
- MultiClick : integer
- { XmMULTICLICK_DISCARD; XmMULTICLICK_KEEP; };
- CommandWindowLocation : integer
- { XmCOMMAND_ABOVE_WORKSPACE; XmCOMMAND_BELOW_WORKSPACE; };
- FileTypeMask : integer
- { XmFILE_REGULAR; XmFILE_DIRECTORY; XmFILE_ANY_TYPE; };
- InitialState : integer
- { NormalState; IconicState; };
- DeleteResponse : integer
- { XmDESTROY; XmUNMAP; XmDO_NOTHING; };
- KeyboardFocusPolicy : integer
- { XmEXPLICIT; XmPOINTER; };
- AudibleWarning : integer
- { XmNONE; XmBELL; };
- VerticalAlignment : integer
- {XmALIGNMENT_BASELINE_TOP; XmALIGNMENT_CENTER;
- XmALIGNMENT_BASELINE_BOTTOM;
- XmALIGNMENT_CONTENTS_TOP; XmALIGNMENT_CONTENTS_BOTTOM; };
- UnpostBehavior : integer
- { XmUNPOST_AND_REPLAY; XmUNPOST; };
- TearOffModel : integer
- { XmTEAR_OFF_ENABLED; XmTEAR_OFF_DISABLED; };
- PositionIndex : integer
- { XmLAST_POSITION; XmFIRST_POSITION; };
- FrameChildType : integer
- { XmFRAME_GENERIC_CHILD; XmFRAME_WORKAREA_CHILD;
- XmFRAME_TITLE_CHILD; };
- ChildVerticalAlignment : integer
- { XmALIGNMENT_BASELINE_TOP; XmALIGNMENT_CENTER;
- XmALIGNMENT_BASELINE_BOTTOM; XmALIGNMENT_WIDGET_BOTTOM;
- XmALIGNMENT_WIDGET_TOP;};
- ChildPlacement : integer
- { XmPLACE_TOP; XmPLACE_ABOVE_SELECTION; XmPLACE_BELOW_SELECTION; };
- TextScanType : integer
- { XmSELECT_POSITION; XmSELECT_WHITESPACE; XmSELECT_WORD;
- XmSELECT_LINE; XmSELECT_ALL; XmSELECT_PARAGRAPH;};
- MwmDecorations : integer
- { MWM_DECOR_ALL; MWM_DECOR_BORDER; MWM_DECOR_RESIZEH; MWM_DECOR_TITLE;
- MWM_DECOR_MENU; MWM_DECOR_MINIMIZE; MWM_DECOR_MAXIMIZE; };
- MwmFunctions : integer
- { MWM_FUNC_ALL; MWM_FUNC_RESIZE; MWM_FUNC_MOVE; MWM_DECOR_MINIMIZE;
- MWM_DECOR_MAXIMIZE; MWM_FUNC_CLOSE; };
- MwmInputMode : integer
- { MWM_INPUT_MODELESS; MWM_INPUT_PRIMARY_APPLICATION_MODAL;
- MWM_INPUT_SYSTEM_MODAL; MWM_INPUT_FULL_APPLICATION_MODAL; };
- ToggleMode : integer
- { XmTOGGLE_BOOLEAN; XmTOGGLE_INDETERMINATE; };
- SliderVisual : integer
- { XmBACKGROUND_COLOR; XmFOREGROUND_COLOR;
- XmTROUGH_COLOR; XmSHADOWED_BACKGROUND; };
- SliderMark : integer
- { XmNONE; XmETCHED_LINE; XmTHUMB_MARK; XmROUND_MARK; };
- SlidingMode : integer
- { XmSLIDER; XmTHERMOMETER; };
- PrimaryOwnership : integer
- { XmOWN_NEVER; XmOWN_ALWAYS; XmOWN_MULTIPLE;
- XmOWN_POSSIBLE_MULTIPLE; };
- SelectionMode : integer
- { XmNORMAL_MODE; XmADD_MODE; };
- MatchBehavior : integer
- { XmQUICK_NAVIGATE; XmINVALID_MATCH_BEHAVIOR; };
- PositionMode : integer
- { XmZERO_BASED; XmONE_BASED; };
- AutoDragModel : integer
- { XmAUTO_DRAG_ENABLED; XmAUTO_DRAG_DISABLED; };
- ShowArrows : integer
- { XmEACH_SIDE; XmMAX_SIDE; XmMIN_SIDE; FALSE; TRUE; };
- TextPath : integer
- { XmSTRING_DIRECTION_L_TO_R; XmSTRING_DIRECTION_R_TO_L;
- XmSTRING_DIRECTION_UNSET; XmSTRING_DIRECTION_DEFAULT;
- XmDEFAULT_DIRECTION; };
- ComboBoxType : integer
- { XmCOMBO_BOX; XmDROP_DOWN_COMBO_BOX; XmDROP_DOWN_LIST; };
- ContainerLineStyle : integer
- { XmSINGLE; };
- EntryViewType : integer
- { XmLARGE_ICON; XmSMALL_ICON; XmANY_ICON; };
- LayoutDirection : integer
- { XmRIGHT_TO_LEFT_TOP_TO_BOTTOM;
- XmLEFT_TO_RIGHT_TOP_TO_BOTTOM;
- XmRIGHT_TO_LEFT_BOTTOM_TO_TOP;
- XmLEFT_TO_RIGHT_BOTTOM_TO_TOP;
- XmTOP_TO_BOTTOM_RIGHT_TO_LEFT;
- XmTOP_TO_BOTTOM_LEFT_TO_RIGHT;
- XmBOTTOM_TO_TOP_RIGHT_TO_LEFT;
- XmBOTTOM_TO_TOP_LEFT_TO_RIGHT;
- XmTOP_TO_BOTTOM;
- XmBOTTOM_TO_TOP;
- XmRIGHT_TO_LEFT;
- XmLEFT_TO_RIGHT;
- XmDEFAULT_DIRECTION; };
- LayoutType : integer
- { XmOUTLINE; XmSPATIAL; XmDETAIL; };
- OutlineButtonPolicy : integer
- { XmOUTLINE_BUTTON_PRESENT; XmOUTLINE_BUTTON_ABSENT; };
- SelectionTechnique : integer
- { XmMARQUEE; XmMARQUEE_EXTEND_START; XmMARQUEE_EXTEND_BOTH;
- XmTOUCH_ONLY; XmTOUCH_OVER; };
- SpatialIncludeModel : integer
- { XmAPPEND; XmCLOSEST; XmFIRST_FIT; };
- SpatialResizeModel : integer
- { XmGROW_MINOR; XmGROW_MAJOR; XmGROW_BALANCED; };
- SpatialSnapModel : integer
- { XmNONE; XmSNAP_TO_GRID; XmCENTER; };
- SpatialStyle : integer
- { XmNONE; XmGRID; XmCELLS; };
- OutlineState : integer
- { XmCOLLAPSED; XmEXPANDED; };
- IconGadgetViewType : integer
- { XmLARGE_ICON; XmSMALL_ICON; };
- VisualEmphasis : integer
- { XmSELECTED; XmNOT_SELECTED; };
- BindingType : integer
- { XmSOLID; XmSPIRAL; XmPIXMAP_OVERLAP_ONLY; };
- ArrowSensitivity : integer
- { XmARROWS_INSENSITIVE; XmARROWS_INCREMENT_SENSITIVE;
- XmARROWS_DECREMENT_SENSITIVE; XmARROWS_SENSITIVE;
- XmARROWS_DEFAULT_SENSITIVITY; };
- ArrowLayout : integer
- { XmARROWS_END; XmARROWS_BEGINNING; XmARROWS_SPLIT;
- XmARROWS_FLAT_END; XmARROWS_FLAT_BEGINNING; };
- ArrowOrientation : integer
- { XmARROWS_VERTICAL; XmARROWS_HORIZONTAL; };
- NotebookChildType : integer
- { XmPAGE; XmMAJOR_TAB; XmMINOR_TAB; XmSTATUS_AREA;
- XmPAGE_SCROLLER; };
- ScrolledWindowChildType : integer
- { XmHOR_SCROLLBAR; XmVERT_SCROLLBAR; XmCOMMAND_WINDOW;
- XmMESSAGE_WINDOW; XmSCROLL_HOR; XmSCROLL_VERT; XmNO_SCROLL;
- XmCLIP_WINDOW; XmGENERIC_CHILD; };
- PositionType : integer
- { XmPOSITION_INDEX; XmPOSITION_VALUE; };
- SpinBoxChildType : integer
- { XmSTRING; XmNUMERIC; };
- InputPolicy : integer
- { XmPER_SHELL; XmPER_WIDGET; XmINHERIT_POLICY; };
- ToggleSetValue : integer
- { XmUNSET; XmSET; XmINDETERMINATE; FALSE; TRUE; };
- ScaleShowValue : integer
- { XmNONE; XmNEAR_SLIDER; XmNEAR_BORDER; FALSE; TRUE; };
- FontType : integer
- { XmAS_IS; XmFONT_IS_FONT; XmFONT_IS_FONTSET; };
- LoadModel : integer
- { XmAS_IS; XmLOAD_IMMEDIATE; XmLOAD_DEFERRED; };
- LineType : integer
- { XmAS_IS; XmSINGLE_LINE; XmDOUBLE_LINE;
- XmSINGLE_DASHED_LINE; XmDOUBLE_DASHED_LINE;
- XmNO_LINE; };
- OffsetModel : integer
- { XmABSOLUTE; XmRELATIVE; };
- CompoundStringComponent : integer
- { XmSTRING_COMPONENT_UNKNOWN; XmSTRING_COMPONENT_CHARSET;
- XmSTRING_COMPONENT_TEXT; XmSTRING_COMPONENT_DIRECTION;
- XmSTRING_COMPONENT_SEPARATOR; XmSTRING_COMPONENT_LOCALE_TEXT;
- XmSTRING_COMPONENT_LOCALE; XmSTRING_COMPONENT_WIDECHAR_TEXT;
- XmSTRING_COMPONENT_LAYOUT_PUSH; XmSTRING_COMPONENT_LAYOUT_POP;
- XmSTRING_COMPONENT_RENDITION_BEGIN; XmSTRING_COMPONENT_RENDITION_END;
- XmSTRING_COMPONENT_TAB; };
- AutomaticSelection : integer
- { XmNO_AUTO_SELECT; XmAUTO_SELECT; FALSE; TRUE; };
-
-\f
-! Define controls list of common aggregates of widgets
-
-ControlList
- AllWidgetsAndGadgets
- {
- DtEditor;
- DtHelpDialog;
- DtHelpQuickDialog;
- DtMenuButton;
- DtPrintSetupBox;
- DtPrintSetupDialog;
- DtTerm;
-
- XmArrowButton;
- XmArrowButtonGadget;
- XmBulletinBoard;
- XmBulletinBoardDialog;
- XmCascadeButton;
- XmCascadeButtonGadget;
- XmCheckBox;
- XmComboBox;
- XmCommand;
- XmCommandDialog;
- XmContainer;
- XmDialogShell;
- XmDrawingArea;
- XmDrawnButton;
- XmErrorDialog;
- XmFileSelectionBox;
- XmFileSelectionDialog;
- XmForm;
- XmFormDialog;
- XmFrame;
- XmIconGadget;
- XmInformationDialog;
- XmLabel;
- XmLabelGadget;
- XmList;
- XmMainWindow;
- XmMenuBar;
- XmMenuShell;
- XmMessageBox;
- XmMessageDialog;
- XmNotebook;
- XmOptionMenu;
- XmPanedWindow;
- XmPopupMenu;
- XmPromptDialog;
- XmPulldownMenu;
- XmPushButton;
- XmPushButtonGadget;
- XmQuestionDialog;
- XmRadioBox;
- XmRenderTable;
- XmRowColumn;
- XmScale;
- XmScrollBar;
- XmScrolledList;
- XmScrolledText;
- XmScrolledWindow;
- XmSelectionBox;
- XmSelectionDialog;
- XmSeparator;
- XmSeparatorGadget;
- XmSimpleSpinBox;
- XmSpinBox;
- XmTemplateDialog;
- XmText;
- XmTextField;
- XmToggleButton;
- XmToggleButtonGadget;
- XmWarningDialog;
- XmWorkArea;
- XmWorkingDialog;
- user_defined;
- };
-
- AllWidgets
- {
- DtEditor;
- DtHelpDialog;
- DtHelpQuickDialog;
- DtMenuButton;
- DtPrintSetupBox;
- DtPrintSetupDialog;
- DtTerm;
-
- XmArrowButton;
- XmBulletinBoard;
- XmBulletinBoardDialog;
- XmCascadeButton;
- XmCheckBox;
- XmComboBox;
- XmCommand;
- XmCommandDialog;
- XmContainer;
- XmDialogShell;
- XmDrawingArea;
- XmDrawnButton;
- XmErrorDialog;
- XmFileSelectionBox;
- XmFileSelectionDialog;
- XmForm;
- XmFormDialog;
- XmFrame;
- XmIconGadget;
- XmInformationDialog;
- XmLabel;
- XmList;
- XmMainWindow;
- XmMenuBar;
- XmMenuShell;
- XmMessageBox;
- XmMessageDialog;
- XmNotebook;
- XmOptionMenu;
- XmPanedWindow;
- XmPopupMenu;
- XmPromptDialog;
- XmPulldownMenu;
- XmPushButton;
- XmQuestionDialog;
- XmRadioBox;
- XmRowColumn;
- XmScale;
- XmScrollBar;
- XmScrolledList;
- XmScrolledText;
- XmScrolledWindow;
- XmSelectionBox;
- XmSelectionDialog;
- XmSeparator;
- XmSimpleSpinBox;
- XmSpinBox;
- XmTemplateDialog;
- XmText;
- XmTextField;
- XmToggleButton;
- XmWarningDialog;
- XmWorkArea;
- XmWorkingDialog;
- user_defined;
- };
-
- MenuWidgetsAndGadgets
- {
- DtMenuButton;
-
- XmCascadeButton;
- XmCascadeButtonGadget;
- XmDrawnButton;
- XmLabel;
- XmLabelGadget;
- XmPushButton;
- XmPushButtonGadget;
- XmSeparator;
- XmSeparatorGadget;
- XmToggleButton;
- XmToggleButtonGadget;
- user_defined;
- };
-
- ManagerWidgets
- {
- DtEditor;
- DtHelpDialog;
- DtHelpQuickDialog;
- DtPrintSetupBox;
- DtPrintSetupDialog;
-
- XmBulletinBoard;
- XmCheckBox;
- XmComboBox;
- XmContainer;
- XmDrawingArea;
- XmFrame;
- XmNotebook;
- XmPanedWindow;
- XmScale;
- XmScrolledWindow;
- XmSimpleSpinBox;
- XmSpinBox;
- XmRowColumn;
- XmWorkArea;
- XmRadioBox;
- XmForm;
- XmMessageBox;
- XmSelectionBox;
- XmFileSelectionBox;
- };
-
-\f
-
-! The root metaclasses and their resources. RectObj/Windowobj constitutes
-! the Core class as documented in the toolkit manual.
-
-
-Class
- Object : MetaClass
- {
- Resources
- {
- ! new resources
- MrmNcreateCallback;
- XmNdestroyCallback;
- ! inherited resources
- };
- };
-Resource
- MrmNcreateCallback : Reason
- { InternalLiteral = MrmNcreateCallback; };
- ! This InternalLiteral is provided so the name can be changed if
- ! desired. The InternalLiteral must NOT be changed.
- XmNdestroyCallback : Reason
- { ResourceLiteral = XmNdestroyCallback; };
- ! This ResourceLiteral setting is included as an example
- ! only. ResourceLiterals are not provided for the rest of
- ! the Motif toolkit because the UIL names are identical
- ! to the toolkit literals (the name supplies the default
- ! literal for each UIL resource).
-
-Class
- RectObj : MetaClass
- {
- SuperClass = Object;
- Resources
- {
- ! new resources
- XmNancestorSensitive;
- XmNborderWidth;
- XmNheight;
- XmNsensitive;
- XmNwidth;
- XmNx;
- XmNy;
- ! inherited resources
- };
- };
-Resource
- XmNancestorSensitive : Argument
- { Type = boolean;
- Default = "True"; };
- XmNborderWidth : Argument
- { Type = horizontal_float;
- Default = "1"; };
- XmNheight : Argument
- { Type = vertical_float;
- Default = "0"; };
- XmNsensitive : Argument
- { Type = boolean;
- Default = "True"; };
- XmNwidth : Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNx : Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNy : Argument
- { Type = vertical_float;
- Default = "0"; };
-
-
-Class
- WindowObj : MetaClass
- {
- SuperClass = RectObj;
- Resources
- {
- ! new resources
- XmNaccelerators;
- XmNbackground;
- XmNbackgroundPixmap;
- XmNborderColor;
- XmNborderPixmap;
- XmNcolormap;
- XmNdepth;
- XmNmappedWhenManaged;
- XmNscreen;
- XmNtranslations;
- XmNinitialResourcesPersistent;
- ! inherited resources
- };
- };
-Resource
- XmNaccelerators : Argument
- { Type = translation_table;
- Default = "Null";};
- XmNbackground : Argument
- { Type = color;
- Default = "White"; };
- XmNbackgroundPixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNborderColor : Argument
- { Type = color ;
- Default = "Black"; };
- XmNborderPixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNcolormap : Argument
- { Type = identifier;
- Default = "XtCopyFromParent"; };
- XmNdepth : Argument
- { Type = identifier;
- Default = "XtCopyFromParent"; };
- XmNmappedWhenManaged : Argument
- { Type = boolean;
- Default = "True"; };
- XmNscreen : Argument
- { Type = identifier ;
- Default = "XtCopyScreen"; };
- XmNtranslations : Argument
- { Type = translation_table;
- Default = "Null"; };
- XmNinitialResourcesPersistent : Argument
- { Type = boolean;
- Default = "True"; };
-
-
-\f
-! Immediate subclasses of WindowObj
-
-Class
- XmPrimitive : MetaClass
- {
- SuperClass = WindowObj;
- Resources
- {
- ! new resources
- XmNbottomShadowColor;
- XmNbottomShadowPixmap;
- XmNconvertCallback;
- XmNforeground;
- XmNhelpCallback;
- XmNhighlightColor;
- XmNhighlightOnEnter;
- XmNhighlightPixmap;
- XmNhighlightThickness;
- XmNnavigationType;
- XmNpopupHandlerCallback;
- XmNshadowThickness;
- XmNtopShadowColor;
- XmNtopShadowPixmap;
- XmNtraversalOn;
- XmNunitType;
- XmNuserData;
- ! inherited resources
- };
- };
-Resource
- XmNbottomShadowColor : Argument
- { Type = color;
- Default = "dynamic"; };
- XmNbottomShadowPixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNforeground : Argument
- { Type = color;
- Default = "dynamic"; };
- XmNhelpCallback : Reason
- { };
- XmNhighlightColor : Argument
- { Type = color;
- Default = "Black"; };
- XmNhighlightOnEnter : Argument
- { Type = boolean;
- Default = "False"; };
- XmNhighlightPixmap : Argument
- { Type = pixmap;
- Default = "dynamic"; };
- XmNhighlightThickness : Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNnavigationType : Argument
- { Type = integer;
- EnumerationSet = NavigationType;
- Default = "XmNONE"; };
- XmNshadowThickness : Argument
- { Type = horizontal_float;
- Default = "2"; };
- XmNtopShadowColor : Argument
- { Type = color;
- Default = "dynamic"; };
- XmNtopShadowPixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNtraversalOn : Argument
- { Type = boolean;
- Default = "True"; };
- XmNunitType : Argument
- { Type = integer;
- EnumerationSet = UnitType;
- Default = "XmPIXELS"; };
- XmNuserData : Argument
- { Type = any;
- Default = "Null"; };
-
-
-Class
- Composite : MetaClass
- {
- SuperClass = WindowObj;
- Resources
- {
- ! new resources
- XmNinsertPosition;
- ! inherited resources
- };
- };
-Resource
- XmNinsertPosition : Constraint
- { Type = identifier ;
- Default = "Null"; };
-
-
-\f
-! Immediate subclasses of RectObj
-
-Class
- XmGadget : MetaClass
- {
- SuperClass = RectObj;
- Resources
- {
- ! new resources
- XmNbackground;
- XmNhelpCallback;
- XmNhighlightOnEnter;
- XmNhighlightThickness;
- XmNnavigationType;
- XmNshadowThickness;
- XmNtraversalOn;
- XmNunitType;
- XmNuserData;
- ! inherited resources
- };
- };
-
-
-\f
-! Immediate sublclasses of XmGadget
-
-Class
- XmArrowButtonGadget : Gadget
- {
- SuperClass = XmGadget;
- ConvenienceFunction = XmCreateArrowButtonGadget;
- WidgetClass = XmArrowButton;
- Resources
- {
- ! new resources
- XmNactivateCallback;
- XmNarmCallback;
- XmNarrowDirection;
- XmNbackground;
- XmNdisarmCallback;
- XmNmultiClick;
-
- ! inherited resources
- };
- };
-Resource
- XmNactivateCallback : Reason
- { };
- XmNarmCallback : Reason
- { };
- XmNarrowDirection : Argument
- { Type = integer;
- EnumerationSet = ArrowDirection;
- Default = "XmDYNAMIC"; };
- XmNdisarmCallback : Reason
- { };
-
-Class
- XmSeparatorGadget : Gadget
- {
- SuperClass = XmGadget;
- ConvenienceFunction = XmCreateSeparatorGadget;
- WidgetClass = XmSeparator;
- Resources
- {
- ! new resources
- XmNbackground;
- XmNmargin;
- XmNorientation;
- XmNseparatorType;
- ! inherited resources
- XmNtraversalOn { Default = "False"; };
- };
- };
-Resource
- XmNmargin : Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNorientation : Argument
- { Type = integer;
- EnumerationSet = Orientation;
- Default = "XmHORIZONTAL"; };
- XmNseparatorType : Argument
- { Type = integer;
- EnumerationSet = SeparatorType;
- Default = "XmSHADOW_ETCHED_IN"; };
-
-Class
- XmIconGadget : Gadget
- {
- SuperClass = XmGadget;
- ConvenienceFunction = XmCreateIconGadget;
- WidgetClass = XmIconGadget;
- Resources
- {
- ! new resources
- XmNalignment;
- XmNbackground;
- XmNdetail;
- XmNdetailCount;
- XmNfontList;
- XmNlabelString;
- XmNlargeIconMask;
- XmNlargeIconPixmap;
- XmNmarginHeight;
- XmNmarginWidth;
- XmNrecomputeSize;
- XmNrenderTable;
- XmNsmallIconMask;
- XmNsmallIconPixmap;
- XmNspacing;
- XmNviewType;
- XmNvisualEmphasis;
-
- ! undocumented resources
- ! XmNdotCache;
- };
- Controls {
- XmRenderTable;
- };
- };
-
-Resource
- XmNdetail : Argument
- { Type = string_table;
- Default = "NULL";
- Related = XmNdetailCount; };
- XmNdetailCount : Argument
- { Type = integer;
- Default = "0"; };
- XmNlargeIconMask : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNlargeIconPixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNsmallIconMask : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNsmallIconPixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNviewType : Argument
- { Type = integer;
- EnumerationSet = IconGadgetViewType; };
- XmNvisualEmphasis : Argument
- { Type = integer;
- EnumerationSet = VisualEmphasis; };
-
-Class
- XmLabelGadget : Gadget
- {
- SuperClass = XmGadget;
- ConvenienceFunction = XmCreateLabelGadget;
- WidgetClass = XmLabel;
- Resources
- {
- ! new resources
- XmNaccelerator;
- XmNacceleratorText;
- XmNalignment;
- XmNbackground;
- XmNfontList;
- XmNrenderTable;
- XmNlabelInsensitivePixmap;
- XmNlabelPixmap;
- XmNlabelString;
- XmNlabelType;
- XmNmarginBottom;
- XmNmarginHeight;
- XmNmarginLeft;
- XmNmarginRight;
- XmNmarginTop;
- XmNmarginWidth;
- XmNmnemonic;
- XmNmnemonicCharSet;
- XmNrecomputeSize;
- XmNstringDirection;
- ! inherited resources
- XmNshadowThickness {Default = "0"; };
- XmNtraversalOn { Default = "False"; };
- };
- Controls {
- XmRenderTable;
- };
- };
-Resource
- XmNaccelerator : Argument
- { Type = string;
- Default = "Null"; };
- XmNacceleratorText : Argument
- { Type = compound_string;
- Default = "Null"; };
- XmNalignment : Argument
- { Type = integer;
- EnumerationSet = Alignment;
- Default = "XmALIGNMENT_CENTER"; };
- XmNfontList : Argument
- { Type = font_table;
- Default = "Fixed"; };
- XmNrenderTable : Argument
- { Type = widget_ref;
- Default = "Fixed"; };
- XmNlabelInsensitivePixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNlabelPixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNlabelString : Argument
- { Type = compound_string;
- Default = "Null"; };
- XmNlabelType : Argument
- { Type = integer;
- EnumerationSet = LabelType;
- Default = "XmSTRING"; };
- XmNmarginBottom : Argument
- { Type = vertical_float;
- Default = "0"; };
- XmNmarginHeight : Argument
- { Type = vertical_float;
- Default = "2"; };
- XmNmarginLeft : Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNmarginRight : Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNmarginTop : Argument
- { Type = vertical_float;
- Default = "0"; };
- XmNmarginWidth : Argument
- { Type = horizontal_float;
- Default = "2"; };
- XmNmnemonic : Argument
- { Type = keysym;
- Default = "NULL"; };
- XmNmnemonicCharSet : Argument
- { Type = string;
- Default = "dynamic"; };
- XmNrecomputeSize : Argument
- { Type = boolean;
- Default = "True"; };
- XmNstringDirection : Argument
- { Type = integer;
- EnumerationSet = StringDirection;
- Default = "XmSTRING_DIRECTION_L_TO_R"; };
-
-Class
- XmTextField : Widget
- {
- SuperClass = XmPrimitive;
- ConvenienceFunction = XmCreateTextField;
- Resources
- {
- ! new resources
- XmNactivateCallback;
- XmNcursorPosition;
- XmNdestinationCallback;
- XmNeditable;
- XmNfocusCallback;
- XmNgainPrimaryCallback;
- XmNlosePrimaryCallback;
- XmNlosingFocusCallback;
- XmNmarginHeight { Default = "3"; };
- XmNmarginWidth { Default = "3"; };
- XmNmaxLength;
- XmNmodifyVerifyCallback;
- XmNmodifyVerifyCallbackWcs;
- XmNmotionVerifyCallback;
- XmNvalue;
- XmNvalueWcs;
- XmNvalueChangedCallback;
- XmNverifyBell;
- ! Input resource set
- XmNpendingDelete;
- XmNselectionArray;
- XmNselectionArrayCount;
- XmNselectThreshold;
- ! Output resource set
- XmNblinkRate;
- XmNcolumns;
- XmNfontList;
- XmNrenderTable;
- XmNcursorPositionVisible;
- XmNresizeHeight;
- XmNresizeWidth;
- XmNrows;
- XmNwordWrap;
- !inherited resources
- XmNnavigationType { Default = "XmTAB_GROUP"; };
- };
- Controls {
- XmPopupMenu;
- XmRenderTable;
- };
- };
-
-Resource
- XmNdestinationCallback : Reason
- { };
-
-\f
-! Immediate subclasses of XmLabelGadget
-
-Class
- XmCascadeButtonGadget : Gadget
- {
- SuperClass = XmLabelGadget;
- ConvenienceFunction = XmCreateCascadeButtonGadget;
- WidgetClass = XmCascadeButton;
- ControlsMapToResource = XmNsubMenuId;
- Resources
- {
- ! new resources
- XmNactivateCallback;
- XmNcascadePixmap;
- XmNcascadingCallback;
- XmNmappingDelay;
- XmNsubMenuId;
- ! inherited resources
- XmNaccelerator { Exclude = True;};
- XmNacceleratorText { Exclude = True;};
- XmNtraversalOn { Default = "True"; };
- };
- Controls
- {
- XmPulldownMenu;
- };
- };
-Resource
- XmNcascadingCallback : Reason
- { };
- XmNcascadePixmap : Argument
- { Type = pixmap;
- Default = "menu-cascade"; };
- XmNmappingDelay : Argument
- { Type = integer;
- Default = "100"; };
- XmNsubMenuId : Argument
- { Type = widget_ref;
- Default = "Null"; };
-
-Class
- XmPushButtonGadget : Gadget
- {
- SuperClass = XmLabelGadget;
- ConvenienceFunction = XmCreatePushButtonGadget;
- WidgetClass = XmPushButton;
- Resources
- {
- ! new resources
- XmNactivateCallback;
- XmNarmCallback;
- XmNarmColor;
- XmNarmPixmap;
- XmNdefaultButtonShadowThickness;
- XmNdisarmCallback;
- XmNfillOnArm;
- XmNmultiClick;
- XmNshowAsDefault ;
- ! inherited resources
- };
- };
-Resource
- XmNarmColor : Argument
- { Type = color;
- Default = "dynamic"; };
- XmNarmPixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNdefaultButtonShadowThickness: Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNfillOnArm : Argument
- { Type = boolean;
- Default = "True"; };
- XmNmultiClick : Argument
- { Type = integer;
- EnumerationSet = MultiClick;
- Default = "XmMULTICLICK_DISCARD"; };
- XmNshowAsDefault : Argument
- { Type = integer;
- Default = "0"; };
-
-Class
- XmToggleButtonGadget : Gadget
- {
- SuperClass = XmLabelGadget;
- ConvenienceFunction = XmCreateToggleButtonGadget;
- WidgetClass = XmToggleButton;
- Resources
- {
- ! new resources
- XmNarmCallback;
- XmNdetailShadowThickness;
- XmNdisarmCallback;
- XmNfillOnSelect;
- XmNhighlightThickness { Default = "dynamic"; };
- XmNindeterminatePixmap;
- XmNindeterminateInsensitivePixmap;
- XmNindicatorOn;
- XmNindicatorSize;
- XmNindicatorType;
- XmNselectColor;
- XmNselectInsensitivePixmap;
- XmNselectPixmap;
- XmNset;
- XmNspacing;
- XmNtoggleMode;
- XmNunselectColor;
- XmNvalueChangedCallback;
- XmNvisibleWhenOff;
- ! inherited resources
- XmNtraversalOn { Default = "True"; };
- };
- };
-Resource
- XmNdetailShadowThickness : Argument
- { Type = horizontal_float;
- Default = "dynamic"; };
- XmNfillOnSelect : Argument
- { Type = boolean;
- Default = "True"; };
- XmNindeterminatePixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNindeterminateInsensitivePixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNindicatorOn : Argument
- { Type = integer;
- EnumerationSet = ToggleIndicatorOn;
- Default = "XmINDICATOR_FILL"; };
- XmNindicatorType : Argument
- { Type = integer;
- EnumerationSet = IndicatorType;
- Default = "XmN_OF_MANY"; };
- XmNindicatorSize : Argument
- { Type = horizontal_float;
- Default = "XmINVALID_DIMENSION"; };
- XmNselectColor : Argument
- { Type = color;
- Default = "dynamic"; };
- XmNselectInsensitivePixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNselectPixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNset : Argument
- { Type = integer;
- EnumerationSet = ToggleSetValue;
- Default = "False"; };
- XmNspacing : Argument
- { Type = horizontal_float;
- Default = "4"; };
- XmNtoggleMode : Argument
- { Type = integer;
- EnumerationSet = ToggleMode; };
- XmNunselectColor : Argument
- { Type = color;
- Default = "dynamic"; };
- XmNvalueChangedCallback : Reason
- { };
- XmNvisibleWhenOff : Argument
- { Type = boolean;
- Default = "True"; };
-
-
-\f
-! Immediate subclasses of XmPrimitive
-
-Class
- XmArrowButton : Widget
- {
- SuperClass = XmPrimitive;
- ConvenienceFunction = XmCreateArrowButton;
- Resources
- {
- ! new resources
- XmNactivateCallback;
- XmNarmCallback;
- XmNarrowDirection;
- XmNdisarmCallback;
- XmNmultiClick;
- ! inherited resources
- };
- Controls {
- XmPopupMenu;
- };
- };
-
-Class
- XmScrollBar : Widget
- {
- SuperClass = XmPrimitive;
- ConvenienceFunction = XmCreateScrollBar;
- Resources
- {
- ! new resources
- XmNdecrementCallback;
- XmNdragCallback;
- XmNeditable;
- XmNincrement;
- XmNincrementCallback;
- XmNinitialDelay;
- XmNmaximum;
- XmNminimum;
- XmNorientation { Default = "XmVERTICAL"; };
- XmNpageDecrementCallback;
- XmNpageIncrement;
- XmNpageIncrementCallback;
- XmNprocessingDirection;
- XmNrepeatDelay;
- XmNshowArrows;
- XmNsliderVisual;
- XmNsliderMark;
- XmNsliderSize;
- XmNslidingMode;
- XmNsnapBackMultiple;
- XmNtoBottomCallback;
- XmNtoTopCallback;
- XmNtroughColor;
- XmNvalue;
- XmNvalueChangedCallback;
- ! inherited resources
- XmNnavigationType { Default = "XmSTICKY_TAB_GROUP"; };
- XmNtraversalOn { Default = "dynamic"; };
- };
- Controls {
- XmPopupMenu;
- };
- };
-Resource
- XmNdecrementCallback : Reason
- { };
- XmNdragCallback : Reason
- { };
- XmNincrement : Argument
- { Type = integer;
- Default = "1"; };
- XmNincrementCallback : Reason
- { };
- XmNinitialDelay : Argument
- { Type = integer;
- Default = "250"; };
- XmNmaximum : Argument
- { Type = integer;
- Default = "0"; };
- XmNminimum : Argument
- { Type = integer;
- Default = "0"; };
- XmNpageDecrementCallback : Reason
- { };
- XmNpageIncrement : Argument
- { Type = integer;
- Default = "10"; };
- XmNpageIncrementCallback : Reason
- { };
- XmNprocessingDirection : Argument
- { Type = integer;
- EnumerationSet = ProcessingDirection;
- Default = "XmMAX_ON_BOTTOM"; };
- XmNrepeatDelay : Argument
- { Type = integer;
- Default = "50"; };
- XmNshowArrows : Argument
- { Type = integer;
- EnumerationSet = ShowArrows;
- Default = "XmEACH_SIDE"; };
- XmNsliderSize : Argument
- { Type = integer;
- Default = "10"; };
- XmNsliderVisual : Argument
- { Type = integer;
- EnumerationSet = SliderVisual;
- Default = "dynamic"; };
- XmNsliderMark : Argument
- { Type = integer;
- EnumerationSet = SliderMark;
- Default = "dynamic"; };
- XmNslidingMode : Argument
- { Type = integer;
- EnumerationSet = SlidingMode;
- Default = "XmSLIDER"; };
- XmNsnapBackMultiple : Argument
- { Type = integer; };
- XmNtoBottomCallback : Reason
- { };
- XmNtoTopCallback : Reason
- { };
- XmNtroughColor : Argument
- { Type = color;
- Default = "dynamic"; };
- XmNvalue : Argument
- { Type = any;
- Default = "Null"; };
-
-Class
- XmSeparator : Widget
- {
- SuperClass = XmPrimitive;
- ConvenienceFunction = XmCreateSeparator;
- Resources
- {
- ! new resources
- XmNmargin;
- XmNorientation;
- XmNseparatorType;
- ! inherited resources
- XmNtraversalOn { Default = "False"; };
- };
- Controls {
- XmPopupMenu;
- };
- };
-
-Class
- XmLabel : Widget
- {
- SuperClass = XmPrimitive;
- ConvenienceFunction = XmCreateLabel;
- Resources
- {
- ! new resources
- XmNaccelerator;
- XmNacceleratorText;
- XmNalignment;
- XmNfontList;
- XmNrenderTable;
- XmNlabelInsensitivePixmap;
- XmNlabelPixmap;
- XmNlabelString;
- XmNlabelType;
- XmNmarginBottom;
- XmNmarginHeight;
- XmNmarginLeft;
- XmNmarginRight;
- XmNmarginTop;
- XmNmarginWidth;
- XmNmnemonic;
- XmNmnemonicCharSet;
- XmNrecomputeSize;
- XmNstringDirection;
- ! inherited resources
- XmNshadowThickness { Default = "0"; };
- XmNtraversalOn { Default = "False"; };
- };
- Controls {
- XmPopupMenu;
- XmRenderTable;
- };
- };
-
-\f
-! Immediate subclass of XmPrimitive. The ScrolledList variant is treated
-! as a subclass
-
-Class
- XmList : Widget
- {
- SuperClass = XmPrimitive;
- ConvenienceFunction = XmCreateList;
- Resources
- {
- ! new resources
- XmNautomaticSelection;
- XmNbrowseSelectionCallback;
- XmNdefaultActionCallback;
- XmNdestinationCallback;
- XmNdoubleClickInterval;
- XmNextendedSelectionCallback;
- XmNfontList;
- XmNrenderTable;
- XmNitemCount;
- XmNitems;
- XmNlistMarginHeight;
- XmNlistMarginWidth;
- XmNlistSizePolicy;
- XmNlistSpacing;
- XmNmatchBehavior;
- XmNmultipleSelectionCallback;
- XmNprimaryOwnership;
- XmNselectedItemCount;
- XmNselectedItems;
- XmNselectedPositions;
- XmNselectedPositionCount;
- XmNselectionMode;
- XmNselectionPolicy;
- XmNsingleSelectionCallback;
- XmNstringDirection;
- XmNtopItemPosition;
- XmNvisibleItemCount;
- ! inherited resources
- XmNnavigationType { Default = "XmTAB_GROUP"; };
- };
- Controls {
- XmPopupMenu;
- XmRenderTable;
- };
- };
-Resource
- XmNautomaticSelection : Argument
- { Type = integer;
- EnumerationSet = AutomaticSelection;
- Default = "FALSE"; };
- XmNbrowseSelectionCallback : Reason
- { };
- XmNdefaultActionCallback : Reason
- { };
- XmNdoubleClickInterval : Argument
- { Type = integer;
- Default = "250"; };
- XmNextendedSelectionCallback : Reason
- { };
- XmNitemCount : Argument
- { Type = integer;
- Default = "0"; };
- XmNitems : Argument
- { Type = string_table;
- Default = "Null";
- Related = XmNitemCount; };
- XmNlistMarginHeight : Argument
- { Type = vertical_float;
- Default = "0"; };
- XmNlistMarginWidth : Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNlistSpacing : Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNmatchBehavior : Argument
- { Type = integer;
- EnumerationSet = MatchBehavior;
- Default = "XmQUICK_NAVIGATE"; };
- XmNmultipleSelectionCallback : Reason
- { };
- XmNprimaryOwnership : Argument
- { Type = integer;
- EnumerationSet = PrimaryOwnership;
- Default = "XmOWN_NEVER"; };
- XmNselectedItemCount : Argument
- { Type = integer;
- Default = "0"; };
- XmNselectedItems : Argument
- { Type = string_table;
- Default = "Null";
- Related = XmNselectedItemCount; };
- XmNselectionMode : Argument
- { Type = integer;
- EnumerationSet = SelectionMode;
- Default = "XmNORMAL_MODE"; };
- XmNselectionPolicy : Argument
- { Type = integer;
- EnumerationSet = SelectionPolicy;
- Default = "XmBROWSE_SELECT"; };
- XmNselectedPositions : Argument
- { Type = integer_table;
- Default = "Null";
- Related = XmNselectedPositionCount; };
- XmNselectedPositionCount : Argument
- { Type = integer;
- Default = "0"; };
- XmNsingleSelectionCallback : Reason
- { };
- XmNtopItemPosition : Argument
- { Type = integer;
- Default = "0"; };
- XmNvisibleItemCount : Argument
- { Type = integer;
- Default = "1"; };
-
-Class
- XmScrolledList : Widget
- {
- SuperClass = XmList;
- ParentClass = XmScrolledWindow;
- ConvenienceFunction = XmCreateScrolledList;
- Resources
- {
- ! new resources
- XmNautoDragModel;
- XmNhorizontalScrollBar;
- XmNlistSizePolicy;
- XmNscrollBarDisplayPolicy;
- XmNscrollBarPlacement;
- XmNscrolledWindowMarginHeight;
- XmNscrolledWindowMarginWidth;
- XmNspacing;
- XmNtraverseObscuredCallback;
- XmNverticalScrollBar;
- ! inherited resources
- };
- Controls {
- XmPopupMenu;
- XmRenderTable;
- };
- };
-Resource
- XmNautoDragModel : Argument
- { Type = integer;
- EnumerationSet = AutoDragModel;
- Default = "XmAUTO_DRAG_ENABLED"; };
- XmNhorizontalScrollBar : Argument
- { Type = widget_ref;
- Default = "Null"; };
- XmNlistSizePolicy : Argument
- { Type = integer ;
- EnumerationSet = ListSizePolicy;
- Default = "XmVARIABLE"; };
- XmNscrollBarDisplayPolicy : Argument
- { Type = integer ;
- EnumerationSet = ScrollBarDisplayPolicy;
- Default = "XmAS_NEEDED"; };
- XmNscrollBarPlacement : Argument
- { Type = integer ;
- EnumerationSet = ScrollBarPlacement;
- Default = "XmBOTTOM_RIGHT"; };
- XmNscrolledWindowMarginHeight : Argument
- { Type = integer ;
- Default = "0"; };
- XmNscrolledWindowMarginWidth : Argument
- { Type = integer ;
- Default = "0"; };
- XmNverticalScrollBar : Argument
- { Type = widget_ref;
- Default = "Null"; };
-
-\f
-! Immediate subclass of XmPrimitive. The Scrolled variant is treated
-! as a subclass
-
-Class
- XmText : Widget
- {
- SuperClass = XmPrimitive;
- ConvenienceFunction = XmCreateText;
- Resources
- {
- ! new resources
- XmNactivateCallback;
- XmNautoShowCursorPosition;
- XmNcursorPosition;
- XmNdestinationCallback;
- XmNeditable;
- XmNeditMode;
- XmNfocusCallback;
- XmNgainPrimaryCallback;
- XmNlosePrimaryCallback;
- XmNlosingFocusCallback;
- XmNmarginHeight { Default = "3"; };
- XmNmarginWidth { Default = "3"; };
- XmNmaxLength;
- XmNmodifyVerifyCallback;
- XmNmodifyVerifyCallbackWcs;
- XmNmotionVerifyCallback;
- XmNsource;
- XmNtopCharacter;
- XmNvalue;
- XmNvalueWcs;
- XmNvalueChangedCallback;
- XmNverifyBell;
- ! Input resource set
- XmNpendingDelete;
- XmNselectionArray;
- XmNselectionArrayCount;
- XmNselectThreshold;
- ! Output resource set
- XmNblinkRate;
- XmNcolumns;
- XmNcursorPositionVisible;
- XmNfontList;
- XmNrenderTable;
- XmNresizeHeight;
- XmNresizeWidth;
- XmNrows;
- XmNwordWrap;
- ! inherited resources
- XmNnavigationType { Default = "XmTAB_GROUP"; };
- };
- Controls {
- XmPopupMenu;
- XmRenderTable;
- };
- };
-Resource
- XmNautoShowCursorPosition : Argument
- { Type = boolean;
- Default = "True"; };
- XmNcursorPosition : Argument
- { Type = integer;
- Default = "0"; };
- XmNeditable : Argument
- { Type = boolean;
- Default = "True"; };
- XmNeditMode : Argument
- { Type = integer;
- EnumerationSet = EditMode;
- Default = "XmSINGLE_LINE_EDIT"; };
- XmNfocusCallback : Reason
- { };
- XmNgainPrimaryCallback : Reason
- { };
- XmNlosePrimaryCallback : Reason
- { };
- XmNlosingFocusCallback : Reason
- { };
- XmNmaxLength : Argument
- { Type = integer;
- Default = "MAXINT"; };
- XmNmodifyVerifyCallback : Reason
- { };
- XmNmodifyVerifyCallbackWcs : Reason
- { };
- XmNmotionVerifyCallback : Reason
- { };
- XmNpendingDelete : Argument
- { Type = boolean;
- Default = "True"; };
- XmNsource : Argument
- { Type = any;
- Default = "Default source"; };
- XmNselectionArray : Argument
- { Type = integer_table;
- Default = "{XmSELECT_POSITION, XmSELECT_WORD, XmSELECT_LINE, XmSELECT_ALL};" ;
- Related = XmNselectionArrayCount; };
- XmNselectionArrayCount : Argument
- { Type = integer;
- Default = "4"; };
- XmNselectThreshold : Argument
- { Type = integer;
- Default = "5"; };
- XmNblinkRate : Argument
- { Type = integer;
- Default = "500"; };
- XmNtopCharacter : Argument
- { Type = integer;
- Default = "0"; };
- XmNverifyBell : Argument
- { Type = boolean;
- Default = "True"; };
- XmNcolumns : Argument
- { Type = integer;
- Default = "20"; };
- XmNcursorPositionVisible : Argument
- { Type = boolean;
- Default = "True"; };
- XmNresizeHeight : Argument
- { Type = boolean;
- Default = "False"; };
- XmNresizeWidth : Argument
- { Type = boolean;
- Default = "False"; };
- XmNrows : Argument
- { Type = integer;
- Default = "1"; };
- XmNvalueWcs : Argument
- { Type = wide_character;
- Default = "Null"; };
- XmNwordWrap : Argument
- { Type = boolean;
- Default = "False"; };
-
-Class
- XmScrolledText : Widget
- {
- SuperClass = XmText;
- ParentClass = XmScrolledWindow;
- ConvenienceFunction = XmCreateScrolledText;
- Resources
- {
- ! new resources
- XmNautoDragModel;
- XmNhorizontalScrollBar;
- XmNscrollBarDisplayPolicy;
- XmNscrollBarPlacement;
- XmNscrollHorizontal;
- XmNscrollLeftSide;
- XmNscrollTopSide;
- XmNscrollVertical;
- XmNscrolledWindowMarginHeight;
- XmNscrolledWindowMarginWidth;
- XmNspacing;
- XmNtraverseObscuredCallback;
- XmNverticalScrollBar;
- ! inherited resources
- };
- Controls {
- XmPopupMenu;
- XmRenderTable;
- };
- };
-Resource
- XmNscrollHorizontal : Argument
- { Type = boolean;
- Default = "True"; };
- XmNscrollLeftSide : Argument
- { Type = boolean;
- Default = "True"; };
- XmNscrollTopSide : Argument
- { Type = boolean;
- Default = "False"; };
- XmNscrollVertical : Argument
- { Type = boolean;
- Default = "False"; };
-
-\f
-! Immediate subclasses of XmLabel
-
-Class
- XmCascadeButton : Widget
- {
- SuperClass = XmLabel;
- ConvenienceFunction = XmCreateCascadeButton;
- ControlsMapToResource = XmNsubMenuId;
- Resources
- {
- ! new resources
- XmNactivateCallback;
- XmNcascadePixmap;
- XmNcascadingCallback;
- XmNmappingDelay;
- XmNsubMenuId;
- ! inherited resources
- XmNaccelerator { Exclude = True;};
- XmNacceleratorText { Exclude = True;};
- XmNtraversalOn { Default = "True"; };
- };
- Controls
- {
- XmPulldownMenu;
- XmPopupMenu;
- };
- };
-
-Class
- XmDrawnButton : Widget
- {
- SuperClass = XmLabel;
- ConvenienceFunction = XmCreateDrawnButton;
- Resources
- {
- ! new resources
- XmNarmCallback;
- XmNactivateCallback;
- XmNdisarmCallback;
- XmNexposeCallback;
- XmNmultiClick;
- XmNresizeCallback;
- XmNpushButtonEnabled;
- XmNshadowType { Default = "XmSHADOW_ETCHED_IN"; };
- ! inherited resources
- };
- Controls {
- XmPopupMenu;
- };
- };
-Resource
- XmNpushButtonEnabled : Argument
- { Type = boolean;
- Default = "False"; };
-
-
-
-! This is a virtual class needed for accessing the automatically created
-! TearOffControl for TearOff Menus. It cannot be instantiated directly.
-Class
- XmTearOffButton : Widget
- {
- SuperClass = XmPushButton;
- ConvenienceFunction = "";
- Resources
- {
- ! new resources
- XmNseparatorType
- { Default = "XmSHADOW_ETCHED_OUT_DASH"; };
- XmNmargin;
- ! inherited resources
- };
- Controls {
- XmPopupMenu;
- };
- };
-
-Class
- XmPushButton : Widget
- {
- SuperClass = XmLabel;
- ConvenienceFunction = XmCreatePushButton;
- Resources
- {
- ! new resources
- XmNactivateCallback;
- XmNarmCallback;
- XmNarmColor;
- XmNarmPixmap;
- XmNdefaultButtonShadowThickness;
- XmNdisarmCallback;
- XmNfillOnArm;
- XmNmultiClick;
- XmNshowAsDefault;
- ! inherited resources
- };
- Controls {
- XmPopupMenu;
- };
- };
-
-Class
- XmToggleButton : Widget
- {
- SuperClass = XmLabel;
- ConvenienceFunction = XmCreateToggleButton;
- Resources
- {
- ! new resources
- XmNarmCallback;
- XmNdetailShadowThickness;
- XmNdisarmCallback;
- XmNfillOnSelect;
- XmNhighlightThickness { Default = "dynamic"; };
- XmNindeterminateInsensitivePixmap;
- XmNindeterminatePixmap;
- XmNindicatorOn;
- XmNindicatorSize;
- XmNindicatorType;
- XmNselectColor;
- XmNselectInsensitivePixmap;
- XmNselectPixmap;
- XmNset;
- XmNspacing;
- XmNtoggleMode;
- XmNunselectColor;
- XmNvalueChangedCallback;
- XmNvisibleWhenOff;
- ! inherited resources
- XmNtraversalOn { Default = "True"; };
- };
- Controls {
- XmPopupMenu;
- };
- };
-
-\f
-! Immediate subclasses of Composite.
-
-Class
- "Constraint" : MetaClass ! Also a keyword, so quote Constraint
- {
- SuperClass = Composite;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- };
-
-Class
- Shell : MetaClass
- {
- SuperClass = Composite;
- Resources
- {
- ! new resources
- XmNallowShellResize;
- XmNcreatePopupChildProc;
- XmNgeometry;
- XmNoverrideRedirect;
- XmNpopdownCallback;
- XmNpopupCallback;
- XmNsaveUnder;
- XmNvisual;
- ! inherited resources
- };
- };
-
-Resource
- XmNallowShellResize : Argument
- { Type = boolean;
- Default = "False"; };
- XmNcreatePopupChildProc : Argument
- { Type = any;
- Default = "NULL"; };
- XmNgeometry : Argument
- { Type = string;
- Default = "NULL"; };
- XmNoverrideRedirect : Argument
- { Type = boolean;
- Default = "False"; };
- XmNpopdownCallback : Reason
- { };
- XmNpopupCallback : Reason
- { };
- XmNsaveUnder : Argument
- { Type = boolean;
- Default = "False"; };
- XmNvisual : Argument
- { Type = any ;
- Default = "CopyFromParent"; };
-
-\f
-! Immediate subclasses of Constraint
-
-Class
- XmManager : MetaClass
- {
- SuperClass = "Constraint";
- Resources
- {
- ! new resources
- XmNbottomShadowColor;
- XmNbottomShadowPixmap;
- XmNforeground;
- XmNhelpCallback;
- XmNhighlightColor;
- XmNhighlightPixmap;
- XmNinitialFocus;
- XmNlayoutDirection;
- XmNnavigationType { Default = "XmTAB_GROUP"; };
- XmNpopupHandlerCallback;
- XmNshadowThickness { Default = "0"; };
- XmNstringDirection;
- XmNtopShadowColor;
- XmNtopShadowPixmap;
- XmNtraversalOn;
- XmNunitType;
- XmNuserData;
- ! inherited resources
- };
- };
-
-Resource
- XmNinitialFocus : Argument
- { Type = widget_ref;
- Default = "NULL"; };
- XmNpopupHandlerCallback : Reason
- { };
- XmNtraversalCallback : Reason
- { };
- XmNtraverseObscuredCallback : Reason
- { };
-
-\f
-! Immediate subclasses of Shell
-
-Class
- OverrideShell : MetaClass
- {
- SuperClass = Shell;
- Resources
- {
- ! new resources
- ! inherited resources
- XmNoverrideRedirect { Default = "True"; };
- XmNsaveUnder { Default = "True"; };
- };
- };
-
-Class
- WMShell : MetaClass
- {
- SuperClass = Shell;
- Resources
- {
- ! new resources
- XmNbaseHeight;
- XmNbaseWidth;
- XmNheightInc;
- XmNiconMask;
- XmNiconPixmap;
- XmNiconWindow;
- XmNiconX;
- XmNiconY;
- XmNinitialState;
- XmNinput;
- XmNmaxAspectX;
- XmNmaxAspectY;
- XmNmaxHeight;
- XmNmaxWidth;
- XmNminAspectX;
- XmNminAspectY;
- XmNminHeight;
- XmNminWidth;
- XmNtitle;
- XmNtitleEncoding;
- XmNtransient;
- XmNwaitForWm;
- XmNwidthInc;
- XmNwindowGroup;
- XmNwinGravity;
- XmNwmTimeout;
- };
- };
-
-Resource
- XmNbaseHeight : Argument
- { Type = vertical_float;
- Default = "dynamic"; };
- XmNbaseWidth : Argument
- { Type = horizontal_float;
- Default = "dynamic"; };
- XmNheightInc : Argument
- { Type = vertical_float;
- Default = "dynamic"; };
- XmNiconMask : Argument
- { Type = pixmap;
- Default = "NULL"; };
- XmNiconPixmap : Argument
- { Type = pixmap;
- Default = "NULL"; };
- XmNiconWindow : Argument
- { Type = any;
- Default = "NULL"; };
- XmNiconX : Argument
- { Type = horizontal_float;
- Default = "-1"; };
- XmNiconY : Argument
- { Type = vertical_float;
- Default = "-1"; };
- XmNinitialState : Argument
- { Type = integer;
- EnumerationSet = InitialState;
- Default = "NormalState"; };
- XmNinput : Argument
- { Type = boolean;
- Default = "False"; };
- XmNmaxAspectX : Argument
- { Type = integer;
- Default = "dynamic"; };
- XmNmaxAspectY : Argument
- { Type = integer;
- Default = "dynamic"; };
- XmNmaxHeight : Argument
- { Type = vertical_float;
- Default = "dynamic"; };
- XmNmaxWidth : Argument
- { Type = horizontal_float;
- Default = "dynamic"; };
- XmNminAspectX : Argument
- { Type = integer;
- Default = "dynamic"; };
- XmNminAspectY : Argument
- { Type = integer;
- Default = "dynamic"; };
- XmNminHeight : Argument
- { Type = vertical_float;
- Default = "dynamic"; };
- XmNminWidth : Argument
- { Type = horizontal_float;
- Default = "dynamic"; };
- XmNtitle : Argument
- { Type = string;
- Default = "dynamic"; };
- XmNtitleEncoding : Argument
- { Type = any;
- Default = "dynamic"; };
- XmNtransient : Argument
- { Type = boolean;
- Default = "False"; };
- XmNwaitForWm : Argument
- { Type = boolean;
- Default = "True"; };
- XmNwidthInc : Argument
- { Type = horizontal_float;
- Default = "dynamic"; };
- XmNwindowGroup : Argument
- { Type = any;
- Default = "dynamic"; };
- XmNwinGravity : Argument
- { Type = integer;
- Default = "dynamic"; };
- XmNwmTimeout : Argument
- { Type = integer;
- Default = "5000"; };
-
-\f
-! Immediate subclasses of WMShell
-Class
- VendorShell : MetaClass
- {
- SuperClass = WMShell;
- Resources
- {
- ! new resources
- XmNaudibleWarning;
- XmNbuttonFontList;
- XmNlabelFontList;
- XmNtextFontList;
- XmNbuttonRenderTable;
- XmNlabelRenderTable;
- XmNtextRenderTable;
- XmNdarkThreshold;
- XmNdefaultFontList;
- XmNdeleteResponse;
- XmNfocusMovedCallback;
- XmNforegroundThreshold;
- XmNinputMethod;
- XmNinputPolicy;
- XmNkeyboardFocusPolicy;
- XmNlightThreshold;
- XmNmwmDecorations;
- XmNmwmFunctions;
- XmNmwmInputMode;
- XmNmwmMenu;
- XmNpreeditType;
- XmNrealizeCallback;
- XmNshellUnitType;
- ! This is really a Shell resource
- XmNuseAsyncGeometry;
- ! inherited resources
- };
- Controls {
- XmRenderTable;
- };
- };
-
-Resource
- XmNaudibleWarning : Argument
- { Type = integer;
- EnumerationSet = AudibleWarning;
- Default = "XmBELL"; };
- XmNdarkThreshold : Argument
- { Type = integer; };
- XmNdefaultFontList : Argument
- { Type = font_table;
- Default = "dynamic"; };
- XmNdeleteResponse : Argument
- { Type = integer;
- EnumerationSet = DeleteResponse;
- Default = "XmDESTROY"; };
- XmNfocusMovedCallback : Reason
- { };
- XmNforegroundThreshold : Argument
- { Type = integer; };
- XmNinputMethod : Argument
- { Type = string;
- Default = "Null"; };
- XmNinputPolicy : Argument
- { Type = integer;
- EnumerationSet = InputPolicy; };
- XmNkeyboardFocusPolicy : Argument
- { Type = integer;
- EnumerationSet = KeyboardFocusPolicy;
- Default = "XmEXPLICIT"; };
- XmNlightThreshold : Argument
- { Type = integer; };
- XmNmwmDecorations : Argument
- { Type = integer;
- EnumerationSet = MwmDecorations;
- Default = "-1"; };
- XmNmwmFunctions : Argument
- { Type = integer;
- EnumerationSet = MwmFunctions;
- Default = "-1"; };
- XmNmwmInputMode : Argument
- { Type = integer;
- EnumerationSet = MwmInputMode;
- Default = "-1"; };
- XmNmwmMenu : Argument
- { Type = string;
- Default = "NULL"; };
- XmNrealizeCallback : Reason
- { };
- XmNpreeditType : Argument
- { Type = string;
- Default = "OverTheSpot,OffTheSpot,Root"; };
- XmNshellUnitType : Argument
- { Type = integer;
- EnumerationSet = UnitType;
- Default = "XmPIXELS"; };
- XmNuseAsyncGeometry : Argument
- { Type = boolean;
- Default = "False"; };
-
-\f
-! Immediate subclasses of VendorShell
-
-Class
- TopLevelShell : MetaClass
- {
- SuperClass = VendorShell;
- Resources
- {
- ! new resources
- XmNiconic;
- XmNiconName;
- XmNiconNameEncoding;
- ! inherited resources
- };
- };
-
-Resource
- XmNiconic : Argument
- { Type = boolean;
- Default = "False"; };
- XmNiconName : Argument
- { Type = string;
- Default = "NULL"; };
- XmNiconNameEncoding : Argument
- { Type = any;
- Default = "dynamic"; };
-
-Class
- TransientShell : MetaClass
- {
- SuperClass = VendorShell;
- Resources
- {
- ! new resources
- XmNtransientFor;
- ! inherited resources
- };
- };
-
-Resource
- XmNtransientFor : Argument
- { Type = widget_ref;
- Default = "NULL"; };
-
-\f
-! Immediate subclasses of TransientShell
-
-Class
- XmDialogShell : Widget
- {
- SuperClass = TransientShell;
- ConvenienceFunction = XmCreateDialogShell;
- Resources
- {
- ! new resources
- ! inherited resources
- XmNdeleteResponse { Default = "XmUNMAP"; };
- };
- Controls
- {
- ManagerWidgets;
- };
- };
-
-\f
-! Immediate subclasses of OverrideShell
-
-Class
- XmMenuShell : Widget
- {
- SuperClass = OverrideShell;
- ConvenienceFunction = XmCreateMenuShell;
- Resources
- {
- ! new resources
- XmNbuttonFontList;
- XmNdefaultFontList;
- XmNlabelFontList;
- XmNbuttonRenderTable;
- XmNlabelRenderTable;
- XmNtextRenderTable;
- ! inherited resources
- XmNallowShellResize { Default = "True"; };
- };
- Controls
- {
- XmRowColumn;
- XmRenderTable;
- };
- };
-
-\f
-! Immediate subclasses of XmManager
-
-Class
- XmDrawingArea : Widget
- {
- SuperClass = XmManager;
- ConvenienceFunction = XmCreateDrawingArea;
- Resources
- {
- ! new resources
- XmNconvertCallback;
- XmNdestinationCallback;
- XmNexposeCallback;
- XmNinputCallback;
- XmNmarginHeight { Default = "10"; };
- XmNmarginWidth { Default = "10"; };
- XmNresizeCallback;
- XmNresizePolicy;
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-Resource
- XmNconvertCallback : Reason
- { };
- XmNexposeCallback : Reason
- { };
- XmNinputCallback : Reason
- { };
- XmNresizeCallback : Reason
- { };
- XmNresizePolicy : Argument
- { Type = integer;
- EnumerationSet = ResizePolicy;
- Default = "XmRESIZE_ANY"; };
-
-Class
- XmFrame : Widget
- {
- SuperClass = XmManager;
- ConvenienceFunction = XmCreateFrame;
- Controls
- {
- AllWidgetsAndGadgets;
- };
- Resources
- {
- ! new resources
- XmNmarginHeight { Default = "0"; };
- XmNmarginWidth { Default = "0"; };
- XmNshadowType;
- ! constraint resources
- XmNchildHorizontalAlignment;
- XmNchildHorizontalSpacing;
- XmNchildType;
- XmNframeChildType;
- XmNchildVerticalAlignment;
- ! inherited resources
- XmNshadowThickness { Default = "dynamic"; };
- };
- };
-Resource
- XmNshadowType : Argument
- { Type = integer;
- EnumerationSet = ShadowType;
- Default = "XmSHADOW_ETCHED_IN"; };
-! constraints
- XmNchildHorizontalAlignment : Constraint
- { Type = integer;
- EnumerationSet = Alignment;
- Default = "XmALIGNMENT_BEGINNING"; };
- XmNchildHorizontalSpacing : Constraint
- { Type = horizontal_float;
- Default = "dynamic"; };
- XmNchildType : Constraint
- { Type = integer;
- EnumerationSet = FrameChildType;
- Default = "XmFRAME_WORKAREA_CHILD"; };
- XmNframeChildType : Constraint
- { Type = integer;
- EnumerationSet = FrameChildType;
- Default = "XmFRAME_WORKAREA_CHILD"; };
- XmNchildVerticalAlignment : Constraint
- { Type = integer;
- EnumerationSet = ChildVerticalAlignment;
- Default = "XmALIGNMENT_CENTER"; };
-
-Class
- XmPanedWindow : Widget
- {
- SuperClass = XmManager;
- ConvenienceFunction = XmCreatePanedWindow;
- Resources
- {
- ! new resources
- XmNmarginHeight { Default = "3"; };
- XmNmarginWidth { Default = "3"; };
- XmNorientation;
- XmNrefigureMode;
- XmNsashHeight;
- XmNsashIndent;
- XmNsashShadowThickness;
- XmNsashWidth;
- XmNseparatorOn;
- XmNspacing { Default = "8"; };
- ! constraint resources
- XmNpaneMinimum;
- XmNpaneMaximum;
- XmNpositionIndex;
- XmNskipAdjust;
- XmNallowResize;
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-Resource
- XmNpositionIndex : Argument
- { Type = integer;
- EnumerationSet = PositionIndex;
- Default = "XmLAST_POSITION"; };
- XmNrefigureMode : Argument
- { Type = boolean;
- Default = "True"; };
- XmNsashHeight : Argument
- { Type = horizontal_float;
- Default = "10"; };
- XmNsashIndent : Argument
- { Type = horizontal_float;
- Default = "-10"; };
- XmNsashShadowThickness : Argument
- { Type = horizontal_float;
- Default = "2"; };
- XmNsashWidth : Argument
- { Type = horizontal_float;
- Default = "10"; };
- XmNseparatorOn : Argument
- { Type = boolean;
- Default = "True"; };
- XmNpaneMinimum : Constraint
- { Type = horizontal_float;
- Default = "1"; };
- XmNpaneMaximum : Constraint
- { Type = horizontal_float;
- Default = "1000"; };
- XmNskipAdjust : Constraint
- { Type = boolean;
- Default = "False"; };
- XmNallowResize : Constraint
- { Type = boolean;
- Default = "False"; };
-
-Class
- XmScale : Widget
- {
- SuperClass = XmManager;
- ConvenienceFunction = XmCreateScale;
- Resources
- {
- ! new resources
- XmNconvertCallback;
- XmNdecimalPoints;
- XmNdragCallback;
- XmNeditable;
- XmNfontList { Default = "Fixed"; };
- XmNrenderTable;
- XmNhighlightOnEnter { Default = "False"; };
- XmNhighlightThickness { Default = "0"; };
- XmNmaximum { Default = "100"; };
- XmNminimum { Default = "0"; };
- XmNorientation { Default = "XmVERTICAL"; };
- XmNprocessingDirection {Default = "XmMAX_ON_TOP"; };
- XmNscaleHeight;
- XmNscaleMultiple;
- XmNscaleWidth;
- XmNshowArrows;
- XmNshowValue;
- XmNsliderVisual;
- XmNslidingMode;
- XmNtitleString;
- XmNvalue { Default = "0"; };
- XmNvalueChangedCallback;
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- Children
- {
- Xm_Title;
- };
- };
-Child
- Xm_Title : XmLabel;
-
-Resource
-
-! XmNdecimalPoints: Argument
-! { Type = integer;
-! Default = "0"; };
- XmNdecimalPoints: Constraint
- { Type = integer;
- Default = "0"; };
- XmNscaleHeight: Argument
- { Type = vertical_float;
- Default = "0"; };
- XmNscaleMultiple: Argument
- { Type = integer;
- Default = "1"; };
- XmNscaleWidth: Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNshowValue: Argument
- { Type = integer;
- EnumerationSet = ScaleShowValue;
- Default = "XmNONE"; };
- XmNtitleString: Argument
- { Type = compound_string;
- Default = "Null"; };
-
-Class
- XmScrolledWindow : Widget
- {
- SuperClass = XmManager;
- ConvenienceFunction = XmCreateScrolledWindow;
- Resources
- {
- ! new resources
- XmNautoDragModel;
- XmNclipWindow { Exclude = True; };
- XmNhorizontalScrollBar { Default = "Null"; };
- XmNscrollBarDisplayPolicy { Default = "XmSTATIC"; };
- XmNscrollBarPlacement { Default = "XmBOTTOM_RIGHT"; };
- XmNscrolledWindowMarginHeight;
- XmNscrolledWindowMarginWidth;
- XmNscrollingPolicy;
- XmNspacing { Default = "4"; };
- XmNtraverseObscuredCallback;
- XmNverticalScrollBar { Default = "Null"; };
- XmNvisualPolicy;
- XmNworkWindow;
- ! inherited resources
- ! constraint resources
- XmNscrolledWindowChildType;
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- Children
- {
- Xm_VertScrollBar;
- Xm_HorScrollBar;
- };
- };
-Child
- Xm_VertScrollBar : XmScrollBar;
- Xm_HorScrollBar : XmScrollBar;
-
-Resource
- XmNclipWindow : Argument
- { Type = widget_ref;
- Default = "Null"; };
- XmNscrollingPolicy : Argument
- { Type = integer;
- EnumerationSet = ScrollingPolicy;
- Default = "XmAPPLICATION_DEFINED"; };
- XmNvisualPolicy : Argument
- { Type = integer;
- EnumerationSet = VisualPolicy;
- Default = "XmVARIABLE"; };
- XmNworkWindow : Argument
- { Type = widget_ref;
- Default = "Null"; };
- XmNscrolledWindowChildType : Constraint
- { Type = integer;
- EnumerationSet = ScrolledWindowChildType; };
-
-Class
- XmComboBox : Widget
- {
- SuperClass = XmManager;
- ConvenienceFunction = XmCreateComboBox;
- Resources
- {
- ! new resources
- XmNarrowSize;
- XmNarrowSpacing;
- XmNcolumns { Default = "XmUNSPECIFIED_COUNT"; };
- XmNcomboBoxType;
- XmNfontList;
- XmNhighlightThickness;
- XmNitems { Default = "XmUNSPECIFIED"; };
- XmNitemCount { Default = "XmUNSPECIFIED_COUNT"; };
- XmNmarginHeight;
- XmNmarginWidth;
- XmNmatchBehavior;
- XmNlist;
- XmNpositionMode;
- XmNrenderTable;
- XmNselectionCallback;
- XmNselectedItem;
- XmNselectedPosition;
- XmNtextField;
- XmNvisibleItemCount { Default = "XmUNSPECIFIED_COUNT";};
-
- ! inherited resources
- XmNnavigationType { Default = "XmSTICKY_TAB_GROUP"; };
- XmNshadowThickness { Default = "dynamic"; };
- };
-!
-! Do the XmNtextField and XmNlist need to be defined in the Children/Controls
-!
- Controls
- {
- AllWidgetsAndGadgets;
- };
- Children
- {
- Xm_List;
- Xm_Text;
- Xm_TextField;
- };
- };
-
-Child
- Xm_List : XmList;
- Xm_TextField : XmTextField;
-
-Resource
- XmNarrowSize : Argument
- { Type = horizontal_float;
- Default = XmINVALID_DIMENSION; };
- XmNarrowSpacing : Argument
- { Type = horizontal_float;
- Default = XmINVALID_DIMENSION; };
- XmNselectionCallback : Reason
- { };
- XmNselectedItem : Argument
- { Type = compound_string;
- Default = "NULL"; };
- XmNselectedPosition : Argument
- { Type = integer;
- Default = "0"; };
- XmNcomboBoxType : Argument
- { Type = integer;
- EnumerationSet = ComboBoxType;
- Default = "XmDROP_DOWN_LIST"; };
- XmNlist : Argument
- { Type = widget_ref;
- Default = "NULL"; };
- XmNtextField : Argument
- { Type = widget_ref;
- Default = "NULL"; };
- XmNpositionMode : Argument
- { Type = integer;
- EnumerationSet = PositionMode;
- Default = "XmZERO_BASED"; };
-
-Class
- XmContainer : Widget
- {
- SuperClass = XmManager;
- ConvenienceFunction = XmCreateContainer;
- Resources
- {
- ! new resources
- XmNautomaticSelection { Default = "XmAUTO_SELECT"; };
- XmNcollapsedStatePixmap;
- XmNconvertCallback;
- XmNdefaultActionCallback;
- XmNdestinationCallback;
- XmNdetailColumnHeading;
- XmNdetailColumnHeadingCount;
- XmNdetailOrder;
- XmNdetailOrderCount;
- XmNdetailTabList;
- XmNentryViewType;
- XmNexpandedStatePixmap;
- XmNlargeCellHeight;
- XmNlargeCellWidth;
- XmNlayoutType;
- XmNmarginHeight;
- XmNmarginWidth;
- XmNoutlineButtonPolicy;
- XmNoutlineChangedCallback;
- XmNoutlineColumnWidth;
- XmNoutlineIndentation;
- XmNoutlineLineStyle;
- XmNprimaryOwnership;
- XmNrenderTable;
- XmNresizeHeight;
- XmNresizeWidth;
- XmNselectColor;
- ! Cannot support the next two without
- ! a widget table data type
- ! XmNselectedObjects;
- ! XmNselectedObjectCount;
- XmNselectionCallback;
- XmNselectionPolicy;
- XmNselectionTechnique;
- XmNsmallCellHeight;
- XmNsmallCellWidth;
- XmNspatialIncludeModel;
- XmNspatialResizeModel;
- XmNspatialSnapModel;
- XmNspatialStyle;
- ! constraint resources
- XmNentryParent;
- XmNoutlineState;
- XmNlargeIconX;
- XmNlargeIconY;
- XmNpositionIndex;
- XmNsmallIconX;
- XmNsmallIconY;
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-Resource
- XmNcollapsedStatePixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNdetailColumnHeading : Argument
- { Type = string_table;
- Default = "NULL";
- Related = XmNdetailColumnHeadingCount; };
- XmNdetailColumnHeadingCount : Argument
- { Type = integer;
- Default = "0"; };
- XmNdetailOrder : Argument
- { Type = integer_table;
- Default = "NULL";
- Related = XmNdetailOrderCount; };
- XmNdetailOrderCount : Argument
- { Type = integer;
- Default = "0"; };
- XmNdetailTabList : Argument
- { Type = widget_ref;
- Default = "NULL"; };
- XmNentryViewType : Argument
- { Type = integer;
- EnumerationSet = EntryViewType;
- Default = "XmLARGE_ICON"; };
- XmNexpandedStatePixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNlargeCellHeight : Argument
- { Type = vertical_float; };
- XmNlargeCellWidth : Argument
- { Type = horizontal_float; };
- XmNlayoutDirection : Argument
- { Type = integer;
- EnumerationSet = LayoutDirection;
- Default = "XmLEFT_TO_RIGHT_TOP_TO_BOTTOM"; };
- XmNlayoutType : Argument
- { Type = integer;
- EnumerationSet = LayoutType;
- Default = "XmSPATIAL"; };
- XmNoutlineButtonPolicy : Argument
- { Type = integer;
- EnumerationSet = OutlineButtonPolicy;
- Default = "XmOUTLINE_BUTTON_PRESENT"; };
- XmNoutlineChangedCallback : Reason
- { };
- XmNoutlineColumnWidth : Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNoutlineIndentation : Argument
- { Type = horizontal_float;
- Default = "100"; };
- XmNoutlineLineStyle : Argument
- { Type = integer;
- EnumerationSet = ContainerLineStyle;
- Default = "XmSINGLE"; };
- XmNselectionTechnique : Argument
- { Type = integer;
- EnumerationSet = SelectionTechnique;
- Default = "XmTOUCH_OVER"; };
- XmNsmallCellHeight : Argument
- { Type = vertical_float; };
- XmNsmallCellWidth : Argument
- { Type = horizontal_float; };
- XmNspatialIncludeModel : Argument
- { Type = integer;
- EnumerationSet = SpatialIncludeModel;
- Default = "XmAPPEND"; };
- XmNspatialResizeModel : Argument
- { Type = integer;
- EnumerationSet = SpatialResizeModel;
- Default = "XmGROW_MINOR"; };
- XmNspatialSnapModel : Argument
- { Type = integer;
- EnumerationSet = SpatialSnapModel;
- Default = "XmNONE"; };
- XmNspatialStyle : Argument
- { Type = integer;
- EnumerationSet = SpatialStyle;
- Default = "XmSPECIFIC"; };
- ! constraint resources
- XmNentryParent : Constraint
- { Type = widget_ref;
- Default = "NULL"; };
- XmNoutlineState : Constraint
- { Type = integer;
- EnumerationSet = OutlineState;
- Default = "XmCOLLAPSED"; };
- XmNlargeIconX : Constraint
- { Type = horizontal_float; };
- XmNlargeIconY : Constraint
- { Type = vertical_float; };
- XmNsmallIconX : Constraint
- { Type = horizontal_float; };
- XmNsmallIconY : Constraint
- { Type = vertical_float; };
-
-Class
- XmNotebook : Widget
- {
- SuperClass = XmManager;
- ConvenienceFunction = XmCreateNotebook;
- Resources
- {
- ! new resources
- XmNcurrentPageNumber;
- XmNfirstPageNumber;
- XmNlastPageNumber;
- XmNorientation;
- XmNbackPagePlacement;
- XmNbackPageNumber;
- XmNbackPageSize;
- XmNbackPageForeground;
- XmNbackPageBackground;
- XmNframeBackground;
- XmNbindingType;
- XmNbindingPixmap;
- XmNbindingWidth;
- XmNinnerMarginWidth;
- XmNinnerMarginHeight;
- XmNmajorTabSpacing;
- XmNminorTabSpacing;
- XmNframeShadowThickness;
- XmNpageChangedCallback;
- ! constraint resources
- XmNnotebookChildType;
- XmNpageNumber;
- XmNresizable;
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-Resource
- XmNcurrentPageNumber : Argument
- { Type = integer; };
- XmNfirstPageNumber : Argument
- { Type = integer;
- Default = "1"; };
- XmNlastPageNumber : Argument
- { Type = integer; };
- XmNbackPagePlacement : Argument
- { Type = integer; };
- XmNbackPageNumber : Argument
- { Type = integer; };
- XmNbackPageSize : Argument
- { Type = horizontal_float; };
- XmNbackPageForeground : Argument
- { Type = color; };
- XmNbackPageBackground : Argument
- { Type = color; };
- XmNframeBackground : Argument
- { Type = color; };
- XmNbindingType : Argument
- { Type = integer;
- EnumerationSet = BindingType; };
- XmNbindingPixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- XmNbindingWidth : Argument
- { Type = horizontal_float;
- Default = "25"; };
- XmNinnerMarginWidth : Argument
- { Type = horizontal_float; };
- XmNinnerMarginHeight : Argument
- { Type = vertical_float; };
- ! I am going out on a limb here, but I think tabs will usually
- ! be situated vertically up and down the notebook. Therefore,
- ! let us make the next two resources vertical floats even though
- ! spacing resources which are used for both vertical and
- ! horizontal dimensions are type as horizontal float by default.
- XmNmajorTabSpacing : Argument
- { Type = vertical_float; };
- XmNminorTabSpacing : Argument
- { Type = vertical_float; };
- XmNnotebookChildType : Constraint
- { Type = integer;
- EnumerationSet = NotebookChildType; };
- XmNframeShadowThickness : Argument
- { Type = horizontal_float; };
- XmNpageChangedCallback : Reason
- { };
- XmNpageNumber : Constraint
- { Type = integer; };
-
-Class
- XmSpinBox : Widget
- {
- SuperClass = XmManager;
- ConvenienceFunction = XmCreateSpinBox;
- Resources
- {
- ! new resources
- XmNarrowLayout;
- XmNarrowOrientation;
- XmNarrowSize;
- XmNdefaultArrowSensitivity;
- XmNinitialDelay;
- XmNmarginWidth;
- XmNmarginHeight;
- XmNmodifyVerifyCallback;
- XmNrepeatDelay;
- XmNspacing { Default = "0"; };
- XmNvalueChangedCallback;
-
- ! inherited resources
- !XmNactivateCallback;
- !XmNlosingFocusCallback;
- !XmNnavigationType;
- !XmNtraversalOn;
-
- ! constraint resources
- XmNarrowSensitivity;
- XmNdecimalPoints;
- XmNincrementValue;
- XmNmaximumValue;
- XmNminimumValue;
- XmNnumValues;
- XmNposition;
- XmNpositionType;
- XmNspinBoxChildType;
- XmNvalues;
-
- ! undocumented resources
- !XmNwrap;
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-
-Resource
- XmNdefaultArrowSensitivity : Argument
- { Type = integer;
- EnumerationSet = ArrowSensitivity;
- Default = "XmARROWS_SENSITIVE"; };
- XmNarrowLayout : Argument
- { Type = integer;
- EnumerationSet = ArrowLayout;
- Default = "XmARROWS_END"; };
- XmNarrowOrientation : Argument
- { Type = integer;
- EnumerationSet = ArrowOrientation;
- Default = "XmARROWS_VERTICAL"; };
- XmNspinBoxChildType : Constraint
- { Type = integer;
- EnumerationSet = SpinBoxChildType; };
- XmNpositionType : Constraint
- { Type = integer;
- EnumerationSet = PositionType;
- Default = "XmPOSITION_VALUE"; };
- XmNposition : Constraint
- { Type = integer;
- Default = "0"; };
- XmNnumValues : Constraint
- { Type = integer;
- Default = "0"; };
- XmNvalues : Constraint
- { Type = string_table;
- Default = "NULL";
- Related = XmNnumValues; };
- XmNminimumValue : Constraint
- { Type = integer;
- Default = "0"; };
- XmNmaximumValue : Constraint
- { Type = integer;
- Default = "10"; };
- XmNincrementValue : Constraint
- { Type = integer;
- Default = "1"; };
- XmNarrowSensitivity : Constraint
- { Type = integer;
- EnumerationSet = ArrowSensitivity;
- Default = "XmARROWS_DEFAULT_SENSITIVITY"; };
- XmNwrap : Constraint
- { Type = boolean;
- Default = "True"; };
-
-
-
-Class
- XmSimpleSpinBox : Widget
- {
- SuperClass = XmSpinBox;
- ConvenienceFunction = XmCreateSimpleSpinBox;
- Resources
- {
- ! inherited resources
- XmNshadowThickness { Default = "1"; };
- ! new resources
- XmNarrowSensitivity;
- XmNcolumns;
- XmNdecimalPoints;
- XmNeditable;
- XmNincrementValue;
- XmNmaximumValue;
- XmNminimumValue;
- XmNnumValues;
- XmNposition;
- XmNpositionType;
- XmNspinBoxChildType { Default = "XmSTRING"; };
- XmNtextField;
- XmNvalues;
- ! undocumented resources
- !XmNwrap;
- };
-!
-! Does the XmNtextField need to be defined in the Children/Controls
-!
- Controls
- {
- XmTextField;
- };
- };
-
-
-\f
-! Bulletin board inherits from XmManager. Its Dialog variant is treated
-! as a subclass
-
-Class
- XmBulletinBoard : Widget
- {
- SuperClass = XmManager;
- ConvenienceFunction = XmCreateBulletinBoard;
- Resources
- {
- ! new resources
- XmNallowOverlap;
- XmNautoUnmanage;
- XmNbuttonFontList;
- XmNcancelButton;
- XmNdefaultButton;
- XmNdefaultPosition;
- XmNdialogStyle;
- XmNdialogTitle;
- XmNfocusCallback;
- XmNlabelFontList;
- XmNlosingFocusCallback;
- XmNmapCallback;
- XmNmarginHeight { Default = "10";};
- XmNmarginWidth { Default = "10";};
- XmNnoResize;
- XmNresizePolicy{ Default = "XmRESIZE_ANY"; };
- XmNshadowType { Default = "XmSHADOW_OUT";};
- XmNtextFontList;
- XmNtextTranslations;
- XmNunmapCallback;
- XmNbuttonRenderTable;
- XmNlabelRenderTable;
- XmNtextRenderTable;
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-Resource
- XmNallowOverlap : Argument
- { Type = boolean;
- Default = "True"; };
- XmNautoUnmanage : Argument
- { Type = boolean;
- Default = "True"; };
- XmNbuttonFontList : Argument
- { Type = font_table;
- Default = "dynamic"; };
- XmNcancelButton : Argument
- { Type = widget_ref;
- Default = "Null"; };
- XmNdefaultButton : Argument
- { Type = widget_ref;
- Default = "Null"; };
- XmNdefaultPosition: Argument
- { Type = boolean;
- Default = "True"; };
- XmNdialogStyle : Argument
- { Type = integer;
- EnumerationSet = DialogStyle;
- Default = "dynamic"; };
- XmNdialogTitle : Argument
- { Type = compound_string;
- Default = "Null"; };
- XmNlabelFontList : Argument
- { Type = font_table;
- Default = "dynamic"; };
- XmNmapCallback : Reason
- { };
- XmNnoResize : Argument
- { Type = boolean;
- Default = "False"; };
- XmNtextFontList : Argument
- { Type = font_table;
- Default = "dynamic"; };
- XmNtextTranslations : Argument
- { Type = translation_table;
- Default = "Null"; };
- XmNunmapCallback : Reason
- { };
- XmNbuttonRenderTable : Argument
- { Type = widget_ref;
- Default = "dynamic"; };
- XmNlabelRenderTable : Argument
- { Type = widget_ref;
- Default = "dynamic"; };
- XmNtextRenderTable : Argument
- { Type = widget_ref;
- Default = "dynamic"; };
-
-Class
- XmBulletinBoardDialog : Widget
- {
- SuperClass = XmBulletinBoard;
- ParentClass = XmDialogShell;
- ConvenienceFunction = XmCreateBulletinBoardDialog;
- DialogClass = True;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-
-\f
-! RowColumn is instantiated as a number of different apparent widget
-! classes. There is a UIL widget for each creation routine, which
-! appears like a discrete class. All inherit from XmManager in fact,
-! but are made to appear as subclasses of RowColumn to make resource
-! specification easier
-
-Class
- XmRowColumn : Widget
- {
- SuperClass = XmManager;
- ConvenienceFunction = XmCreateRowColumn;
- Resources
- {
- ! new resources
- XmNadjustLast;
- XmNadjustMargin;
- XmNentryAlignment;
- XmNentryBorder;
- XmNentryCallback;
- XmNentryClass;
- XmNentryVerticalAlignment;
- XmNisAligned;
- XmNisHomogeneous;
- XmNlabelString { Default = "Null"; };
- XmNmapCallback;
- XmNmarginHeight{ Default = "dynamic";};
- XmNmarginWidth { Default = "3";};
- XmNmenuAccelerator;
- XmNmenuHelpWidget;
- XmNmenuHistory;
- XmNmenuPost;
- XmNmnemonic { Default = "dynamic"; };
- XmNmnemonicCharSet;
- XmNnumColumns;
- XmNorientation { Default = "dynamic"; };
- XmNpacking;
- XmNpopupEnabled;
- XmNradioAlwaysOne;
- XmNradioBehavior;
- XmNresizeHeight { Default = "True"; };
- XmNresizeWidth { Default = "True"; };
- XmNrowColumnType;
- XmNspacing { Default = "dynamic"; };
- XmNsubMenuId { Default = "Null";};
- XmNtearOffMenuActivateCallback;
- XmNtearOffMenuDeactivateCallback;
- XmNtearOffModel;
- XmNtearOffTitle;
- XmNunmapCallback;
- XmNwhichButton;
- ! constraint resources
- XmNpositionIndex;
- ! inherited resources
- XmNborderWidth { Default = "0"; };
- XmNheight { Default = "dynamic"; };
- XmNnavigationType { Default = "dynamic"; };
- XmNwidth { Default = "dynamic"; };
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-Resource
- XmNadjustLast : Argument
- { Type = boolean;
- Default = "True"; };
- XmNadjustMargin : Argument
- { Type = boolean;
- Default = "True"; };
- XmNentryAlignment : Argument
- { Type = integer;
- EnumerationSet = Alignment;
- Default = "dynamic"; };
- XmNentryBorder : Argument
- { Type = horizontal_float;
- Default = "dynamic"; };
- XmNentryCallback : Reason
- { };
- XmNentryClass : Argument
- { Type = class_rec_name;
- Default = "dynamic"; };
- XmNentryVerticalAlignment : Argument
- { Type = integer;
- EnumerationSet = VerticalAlignment;
- Default = "XmALIGNMENT_CENTER"; };
- XmNisAligned : Argument
- { Type = boolean;
- Default = "True"; };
- XmNisHomogeneous : Argument
- { Type = boolean;
- Default = "dynamic"; };
- XmNmenuAccelerator : Argument
- { Type = string;
- Default = "dynamic"; };
-! XmNmenuTranslation : Argument
-! { Type = translation_table;
-! Default = "NULL"; };
- XmNmenuHelpWidget : Argument
- { Type = widget_ref;
- Default = "Null"; };
- XmNmenuHistory : Argument
- { Type = widget_ref;
- Default = "Null"; };
- XmNmenuPost : Argument
- { Type = string;
- Default = "Null"; };
- XmNnumColumns : Argument
- { Type = integer;
- Default = "dynamic"; };
- XmNpacking : Argument
- { Type = integer;
- EnumerationSet = Packing;
- Default = "dynamic"; };
- XmNpopupEnabled : Argument
- { Type = boolean;
- Default = "True"; };
- XmNradioAlwaysOne : Argument
- { Type = boolean;
- Default = "True"; };
- XmNradioBehavior : Argument
- { Type = boolean;
- Default = "False"; };
- XmNrowColumnType : Argument
- { Type = integer;
- EnumerationSet = RowColumnType;
- Default = "XmWORK_AREA"; };
- XmNtearOffMenuActivateCallback : Reason
- { };
- XmNtearOffMenuDeactivateCallback : Reason
- { };
- XmNtearOffModel : Argument
- { Type = integer;
- EnumerationSet = TearOffModel;
- Default = "XmTEAR_OFF_DISABLED"; };
- XmNtearOffTitle : Argument
- { Type = string;
- Default = "NULL"; };
- XmNunpostBehavior : Argument
- { Type = integer;
- EnumerationSet = UnpostBehavior;
- Default = "XmUNPOST_AND_REPLAY"; };
- XmNwhichButton : Argument
- { Type = integer;
- Default = "dynamic"; };
-
-Class
- XmWorkArea : Widget
- {
- SuperClass = XmRowColumn;
- ConvenienceFunction = XmCreateWorkArea;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-
-Class
- XmMenuBar : Widget
- {
- SuperClass = XmRowColumn;
- ConvenienceFunction = XmCreateMenuBar;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- MenuWidgetsAndGadgets;
- XmPopupMenu;
- XmPulldownMenu;
- };
- };
-
-
-Class
- XmOptionMenu : Widget
- {
- SuperClass = XmRowColumn;
- ConvenienceFunction = XmCreateOptionMenu;
- ControlsMapToResource = XmNsubMenuId;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- XmPulldownMenu;
- };
- Children
- {
- Xm_OptionLabel;
- Xm_OptionButton;
- };
- };
-
-Child
- Xm_OptionLabel : XmLabelGadget;
- Xm_OptionButton : XmCascadeButtonGadget;
-
-Class
- XmPopupMenu : Widget
- {
- SuperClass = XmRowColumn;
- ParentClass = XmMenuShell;
- ConvenienceFunction = XmCreatePopupMenu;
- DialogClass = True;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- MenuWidgetsAndGadgets;
- };
- Children
- {
- Xm_TearOffControl;
- };
- };
-
-Child
- Xm_TearOffControl : XmTearOffButton;
-
-Class
- XmPulldownMenu : Widget
- {
- SuperClass = XmRowColumn;
- ParentClass = XmMenuShell;
- ConvenienceFunction = XmCreatePulldownMenu;
- DialogClass = True;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- MenuWidgetsAndGadgets;
- };
- Children
- {
- Xm_TearOffControl;
- };
- };
-
-Class
- XmRadioBox : Widget
- {
- SuperClass = XmRowColumn;
- ConvenienceFunction = XmCreateRadioBox;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-!
-! Fix for CR 5651 - add information for the CheckBox
-!
-Class
- XmCheckBox : Widget
- {
- SuperClass = XmRowColumn;
- ConvenienceFunction = XmCreateSimpleCheckBox;
- Resources
- {
- XmNbuttonCount;
- XmNbuttons;
- XmNsimpleCallback;
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-Resource
- XmNbuttons : Argument
- { Type = string_table;
- Default = "NULL";
- Related = XmNbuttonCount; };
- XmNbuttonCount : Argument
- { Type = integer;
- Default = "0"; };
- XmNsimpleCallback : Reason
- { };
-!
-! End Fix for CR 5651
-!
-
-\f
-! Immediate subclasses of XmScrolledWindow
-
-Class
- XmMainWindow : Widget
- {
- SuperClass = XmScrolledWindow;
- ConvenienceFunction = XmCreateMainWindow;
- DialogClass = True;
- Resources
- {
- ! new resources
- XmNcommandWindow;
- XmNcommandWindowLocation;
- XmNmainWindowMarginHeight;
- XmNmainWindowMarginWidth;
- XmNmenuBar;
- XmNmessageWindow;
- XmNshowSeparator;
- ! inherited constraint resources
- XmNscrolledWindowChildType;
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- Children
- {
- Xm_Separator1;
- Xm_Separator2;
- Xm_Separator3;
- };
- };
-Child
- Xm_Separator1 : XmSeparator;
- Xm_Separator2 : XmSeparator;
- Xm_Separator3 : XmSeparator;
-
-Resource
- XmNcommandWindow : Argument
- { Type = widget_ref;
- Default = "Null"; };
- XmNcommandWindowLocation : Argument
- { Type = integer;
- EnumerationSet = CommandWindowLocation;
- Default = "XmCOMMAND_ABOVE_WORKSPACE"; };
- XmNmainWindowMarginHeight : Argument
- { Type = vertical_float;
- Default = "0"; };
- XmNmainWindowMarginWidth : Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNmenuBar : Argument
- { Type = widget_ref;
- Default = "Null"; };
- XmNmessageWindow : Argument
- { Type = widget_ref;
- Default = "Null"; };
- XmNshowSeparator : Argument
- { Type = boolean;
- Default = "False"; };
-
-\f
-! Immediate subclasses of XmBulletinBoard
-! For each class, the Dialog variant is treated as a subclass
-
-Class
- XmForm : Widget
- {
- SuperClass = XmBulletinBoard;
- ConvenienceFunction = XmCreateForm;
- Resources
- {
- ! new resources
- XmNfractionBase;
- XmNhorizontalSpacing;
- XmNrubberPositioning;
- XmNverticalSpacing;
- ! constraint resources
- XmNbottomAttachment;
- XmNbottomOffset;
- XmNbottomPosition;
- XmNbottomWidget;
- XmNleftAttachment;
- XmNleftOffset;
- XmNleftPosition;
- XmNleftWidget;
- XmNresizable;
- XmNrightAttachment;
- XmNrightOffset;
- XmNrightPosition;
- XmNrightWidget;
- XmNtopAttachment;
- XmNtopOffset;
- XmNtopPosition;
- XmNtopWidget;
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-Resource
- XmNfractionBase : Argument
- { Type = integer;
- Default = "100"; };
- XmNhorizontalSpacing : Argument
- { Type = horizontal_float;
- Default = "0"; };
- XmNverticalSpacing : Argument
- { Type = vertical_float;
- Default = "0"; };
- XmNrubberPositioning : Argument
- { Type = boolean;
- Default = "False"; };
-! constraints
- XmNbottomAttachment : Constraint
- { Type = integer;
- EnumerationSet = Attachment;
- Default = "XmATTACH_NONE"; };
- XmNbottomOffset : Constraint
- { Type = vertical_float;
- Default = "0"; };
- XmNbottomPosition : Constraint
- { Type = integer;
- Default = "0"; };
- XmNbottomWidget : Constraint
- { Type = widget_ref;
- Default = "Null"; };
- XmNleftAttachment : Constraint
- { Type = integer;
- EnumerationSet = Attachment;
- Default = "XmATTACH_NONE"; };
- XmNleftOffset : Constraint
- { Type = horizontal_float;
- Default = "0"; };
- XmNleftPosition : Constraint
- { Type = integer;
- Default = "0"; };
- XmNleftWidget : Constraint
- { Type = widget_ref;
- Default = "Null"; };
- XmNresizable : Constraint
- { Type = boolean;
- Default = "True"; };
- XmNrightAttachment : Constraint
- { Type = integer;
- EnumerationSet = Attachment;
- Default = "XmATTACH_NONE"; };
- XmNrightOffset : Constraint
- { Type = horizontal_float;
- Default = "0"; };
- XmNrightPosition : Constraint
- { Type = integer;
- Default = "0"; };
- XmNrightWidget : Constraint
- { Type = widget_ref;
- Default = "Null"; };
- XmNtopAttachment : Constraint
- { Type = integer;
- EnumerationSet = Attachment;
- Default = "XmATTACH_NONE"; };
- XmNtopOffset : Constraint
- { Type = vertical_float;
- Default = "0"; };
- XmNtopWidget : Constraint
- { Type = widget_ref;
- Default = "Null"; };
- XmNtopPosition : Constraint
- { Type = integer;
- Default = "0"; };
-
-Class
- XmFormDialog : Widget
- {
- SuperClass = XmForm;
- ParentClass = XmDialogShell;
- ConvenienceFunction = XmCreateFormDialog;
- DialogClass = True;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-
-\f
-! Immediate subclass of XmBulletinBoard
-
-! Most Dialogs are variants of MessageBox, and are treated as subclasses.
-
-Class
- XmMessageBox : Widget
- {
- SuperClass = XmBulletinBoard;
- ConvenienceFunction = XmCreateMessageBox;
- Resources
- {
- ! new resources
- XmNcancelCallback;
- XmNcancelLabelString;
- XmNdefaultButtonType;
- XmNdialogType;
- XmNhelpLabelString;
- XmNmessageAlignment;
- XmNmessageString;
- XmNminimizeButtons;
- XmNokCallback;
- XmNokLabelString;
- XmNsymbolPixmap;
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- Children
- {
- Xm_Symbol;
- Xm_Separator;
- Xm_Message;
- Xm_OK;
- Xm_Cancel;
- Xm_Help;
- };
- };
-Child
- Xm_Symbol : XmLabel;
- Xm_Separator : XmSeparator;
- Xm_Message : XmLabel;
- Xm_OK : XmPushButton;
- Xm_Cancel : XmPushButton;
- Xm_Help : XmPushButton;
-
-Resource
- XmNcancelCallback : Reason
- { };
- XmNcancelLabelString : Argument
- { Type = compound_string;
- Default = "Cancel"; };
- XmNdefaultButtonType : Argument
- { Type = integer;
- EnumerationSet = DefaultButtonType;
- Default = "XmDIALOG_OK_BUTTON"; };
- XmNdialogType : Argument
- { Type = integer;
- EnumerationSet = DialogType;
- Default = "XmDIALOG_MESSAGE"; };
- XmNhelpLabelString : Argument
- { Type = compound_string;
- Default = "Help"; };
- XmNmessageAlignment : Argument
- { Type = integer;
- EnumerationSet = Alignment;
- Default = "XmALIGNMENT_BEGINNING"; };
- XmNmessageString : Argument
- { Type = compound_string;
- Default = "Null"; };
- XmNminimizeButtons : Argument
- { Type = boolean;
- Default = "False"; };
- XmNokCallback : Reason
- { };
- XmNokLabelString : Argument
- { Type = compound_string;
- Default = "OK"; };
- XmNsymbolPixmap : Argument
- { Type = pixmap;
- Default = "XmDEFAULT_PIXMAP"; };
-
-
-Class
- XmMessageDialog : Widget
- {
- SuperClass = XmMessageBox;
- ParentClass = XmDialogShell;
- ConvenienceFunction = XmCreateMessageDialog;
- DialogClass = True;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-
-Class
- XmErrorDialog : Widget
- {
- SuperClass = XmMessageDialog;
- ConvenienceFunction = XmCreateErrorDialog;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-
-Class
- XmInformationDialog : Widget
- {
- SuperClass = XmMessageDialog;
- ConvenienceFunction = XmCreateInformationDialog;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-
-Class
- XmQuestionDialog : Widget
- {
- SuperClass = XmMessageDialog;
- ConvenienceFunction = XmCreateQuestionDialog;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-Class
- XmTemplateDialog : Widget
- {
- SuperClass = XmMessageDialog;
- ConvenienceFunction = XmCreateTemplateDialog;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-Class
- XmWarningDialog : Widget
- {
- SuperClass = XmMessageDialog;
- ConvenienceFunction = XmCreateWarningDialog;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-
-Class
- XmWorkingDialog : Widget
- {
- SuperClass = XmMessageDialog;
- ConvenienceFunction = XmCreateWorkingDialog;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-
-\f
-! Immediate subclass of XmBulletinBoard
-
-! Dialog variants are treated as subclasses
-
-Class
- XmSelectionBox : Widget
- {
- SuperClass = XmBulletinBoard;
- ConvenienceFunction = XmCreateSelectionBox;
- Resources
- {
- ! new resources
- XmNapplyCallback;
- XmNapplyLabelString;
- XmNcancelCallback;
- XmNcancelLabelString { Default = "cancel"; };
- XmNdialogType { Default = "dynamic"; };
- XmNhelpLabelString { Default = "help"; };
- XmNlistItemCount;
- XmNlistItems;
- XmNlistLabelString;
- XmNlistVisibleItemCount;
- XmNminimizeButtons { Default = "False"; };
- XmNmustMatch;
- XmNnoMatchCallback;
- XmNokCallback;
- XmNokLabelString;
- XmNselectionLabelString;
- XmNtextAccelerators;
- XmNtextColumns;
- XmNtextString;
- XmNchildPlacement;
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- Children
- {
- Xm_Items;
- Xm_ItemsList;
- Xm_Selection;
- Xm_Text;
- Xm_Separator;
- Xm_OK;
- Xm_Cancel;
- Xm_Help;
- Xm_Apply;
- };
- };
-Child
- Xm_Items : XmLabel;
- Xm_ItemsList : XmScrolledList;
- Xm_Selection : XmLabel;
- Xm_Text : XmText;
- Xm_Apply : XmPushButton;
-
-Resource
- XmNapplyCallback : Reason
- { };
- XmNapplyLabelString : Argument
- { Type = compound_string;
- Default = "Apply"; };
- XmNlistItemCount : Argument
- { Type = integer;
- Default = "0"; };
- XmNlistItems : Argument
- { Type = string_table;
- Default = "Null";
- Related = XmNlistItemCount; };
- XmNlistLabelString : Argument
- { Type = compound_string;
- Default = "Null"; };
- XmNlistVisibleItemCount : Argument
- { Type = integer;
- Default = "8"; };
- XmNmustMatch : Argument
- { Type = boolean;
- Default = "False"; };
- XmNnoMatchCallback: Reason
- { };
- XmNselectionLabelString : Argument
- { Type = compound_string;
- Default = "Selection"; };
- XmNtextAccelerators : Argument
- { Type = translation_table;
- Default = ""; };
- XmNtextColumns : Argument
- { Type = integer;
- Default = "20"; };
- XmNtextString : Argument
- { Type = compound_string;
- Default = "Null"; };
- XmNchildPlacement : Constraint
- { Type = integer;
- EnumerationSet = ChildPlacement;
- Default = "XmPLACE_ABOVE_SELECTION"; };
-
-Class
- XmSelectionDialog : Widget
- {
- SuperClass = XmSelectionBox;
- ParentClass = XmDialogShell;
- ConvenienceFunction = XmCreateSelectionDialog;
- DialogClass = True;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-
-Class
- XmPromptDialog : Widget
- {
- SuperClass = XmSelectionBox;
- ParentClass = XmDialogShell;
- ConvenienceFunction = XmCreatePromptDialog;
- DialogClass = True;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-
-\f
-! Immediate subclasses of XmSelectionBox
-
-Class
- XmCommand : Widget
- {
- SuperClass = XmSelectionBox;
- ConvenienceFunction = XmCreateCommand;
- Resources
- {
- ! new resources
- XmNcommand;
- XmNcommandChangedCallback;
- XmNcommandEnteredCallback;
- XmNhistoryItems;
- XmNhistoryItemCount;
- XmNhistoryMaxItems;
- XmNhistoryVisibleItemCount;
- XmNpromptString;
- ! inherited resources
- XmNapplyCallback { Exclude = True; };
- XmNapplyLabelString { Exclude = True; };
- XmNautoUnmanage {Exclude = True;};
- XmNcancelCallback { Exclude = True; };
- XmNcancelLabelString { Exclude = True; };
- XmNhelpLabelString { Exclude = True; };
- XmNlistLabelString { Exclude = True; };
- XmNminimizeButtons { Exclude = True; };
- XmNmustMatch { Exclude = True; };
- XmNnoMatchCallback { Exclude = True; };
- XmNokCallback { Exclude = True; };
- XmNokLabelString { Exclude = True; };
- XmNallowOverlap { Exclude = True; };
- XmNbuttonFontList { Exclude = True; };
- XmNcancelButton { Exclude = True; };
- XmNdefaultButton { Exclude = True; };
- XmNdialogType { Default = "XmDIALOG_COMMAND"; };
- };
- Controls
- {
- XmPopupMenu;
- };
- };
-Resource
- XmNcommand : Argument
- { Type = compound_string;
- Default = "Null"; };
- XmNcommandChangedCallback : Reason
- { };
- XmNcommandEnteredCallback : Reason
- { };
- XmNhistoryItems : Argument
- { Type = string_table;
- Default = "Null";
- Related = XmNhistoryItemCount; };
- XmNhistoryItemCount : Argument
- { Type = integer;
- Default = "0"; };
- XmNhistoryMaxItems : Argument
- { Type = integer;
- Default = "100"; };
- XmNhistoryVisibleItemCount : Argument
- { Type = integer;
- Default = "8"; };
- XmNpromptString : Argument
- { Type = compound_string;
- Default = ">"; };
-
-Class
- XmCommandDialog : Widget
- {
- SuperClass = XmCommand;
- ParentClass = XmDialogShell;
- ConvenienceFunction = XmCreateCommandDialog;
- DialogClass = True;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-
-\f
-! Immediate subclass of SelectionBox
-! The Dialog variant is treated as a subclass
-
-Class
- XmFileSelectionBox : Widget
- {
- SuperClass = XmSelectionBox;
- ConvenienceFunction = XmCreateFileSelectionBox;
- Resources
- {
- ! new resources
- XmNdirMask;
- XmNdirSpec;
- XmNfileSearchProc;
- XmNfileTypeMask;
- XmNfilterLabelString;
- XmNlistUpdated;
- XmNdirectory;
- XmNdirectoryValid;
- XmNpattern;
- XmNdirListLabelString;
- XmNdirListItems;
- XmNdirListItemCount;
- XmNfileListItemCount;
- XmNfileListItems;
- XmNnoMatchString;
- XmNqualifySearchDataProc;
- XmNdirSearchProc;
- XmNfileListLabelString;
- ! inherited resources
- XmNapplyLabelString { Default = "Filter"; };
- XmNlistLabelString { Default = "Files"; };
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- Children
- {
- Xm_FilterLabel;
- Xm_FilterText;
- Xm_DirList;
- Xm_Dir;
- Xm_Filter;
- };
- };
-Child
- Xm_FilterLabel : XmLabel;
- Xm_FilterText : XmText;
- Xm_DirList : XmScrolledList;
- Xm_Dir : XmLabel;
- Xm_Filter : XmPushButton;
-
-Resource
- XmNdirMask : Argument
- { Type = compound_string;
- Default = "*"; };
- XmNdirSpec : Argument
- { Type = compound_string;
- Default = "Null"; };
- XmNfileSearchProc : Argument
- { Type = any;
- Default = "default"; };
- XmNfilterLabelString : Argument
- { Type = compound_string;
- Default = "File Filter"; };
- XmNlistUpdated : Argument
- { Type = boolean;
- Default = "True"; };
- XmNfileTypeMask : Argument
- { Type = integer;
- EnumerationSet = FileTypeMask;
- Default = "XmFILE_REGULAR"; };
- XmNdirectory: Argument
- { Type = compound_string;
- Default = "current working directory"; };
- XmNdirectoryValid : Argument
- { Type = boolean;
- Default = "True"; };
- XmNpattern: Argument
- { Type = compound_string;
- Default = "*"; };
- XmNdirListLabelString: Argument
- { Type = compound_string;
- Default = "Directories"; };
- XmNdirListItemCount : Argument
- { Type = integer;
- Default = "0"; };
- XmNdirListItems : Argument
- { Type = string_table;
- Default = "dynamic";
- Related = XmNdirListItemCount; };
- XmNfileListItemCount : Argument
- { Type = integer;
- Default = "0"; };
- XmNfileListItems : Argument
- { Type = string_table;
- Default = "NULL";
- Related = XmNfileListItemCount; };
- XmNnoMatchString: Argument
- { Type = compound_string;
- Default = " [ ] "; };
- XmNqualifySearchDataProc : Argument
- { Type = any;
- Default = "default"; };
- XmNdirSearchProc : Argument
- { Type = any;
- Default = "default"; };
- XmNfileListLabelString: Argument
- { Type = compound_string;
- Default = "Files"; };
-
-Class
- XmFileSelectionDialog : Widget
- {
- SuperClass = XmFileSelectionBox;
- ParentClass = XmDialogShell;
- ConvenienceFunction = XmCreateFileSelectionDialog;
- DialogClass = True;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-\f
-! pseudo-classes for renditions
-Class
- XmRenderTable : Widget
- {
- SuperClass = Object;
- ConvenienceFunction = _XmCreateRenderTable;
- Controls
- {
- XmRendition;
- };
- };
-
-Class
- XmRendition : Widget
- {
- SuperClass = Object;
- ConvenienceFunction = _XmCreateRendition;
- Resources
- {
- XmNfontName;
- XmNfontType;
- XmNloadModel;
- XmNfont;
- XmNrenditionBackground;
- XmNrenditionForeground;
- XmNunderlineType;
- XmNstrikethruType;
- };
- Controls
- {
- XmTabList;
- };
- };
-
-Resource
- XmNfontName : Argument
- { Type = string;
- Default = "XmAS_IS"; };
- XmNfontType : Argument
- { Type = integer;
- EnumerationSet = FontType;
- Default = "XmAS_IS"; };
- XmNloadModel : Argument
- { Type = integer;
- EnumerationSet = LoadModel;
- Default = "XmAS_IS"; };
- XmNfont : Argument
- { Type = font;
- Default = "XmAS_IS"; };
- XmNrenditionBackground : Argument
- { Type = color;
- Default = "XmUNSPECIFIED_PIXEL"; };
- XmNrenditionForeground : Argument
- { Type = color;
- Default = "XmUNSPECIFIED_PIXEL"; };
- XmNunderlineType : Argument
- { Type = integer;
- EnumerationSet = LineType;
- Default = "XmAS_IS"; };
- XmNstrikethruType : Argument
- { Type = integer;
- EnumerationSet = LineType;
- Default = "XmAS_IS"; };
-
-Class
- XmTabList : Widget
- {
- SuperClass = Object;
- ConvenienceFunction = _XmCreateTabList;
- Controls
- {
- XmTab;
- };
- };
-
-Class
- XmTab : Widget
- {
- SuperClass = Object;
- ConvenienceFunction = _XmCreateTab;
- Resources
- {
- XmNtabValue;
- XmNunitType;
- XmNoffsetModel;
- XmNalignment { Default = "XmALIGNMENT_BEGINNING"; };
- XmNdecimal;
- };
- };
-
-Resource
- XmNtabValue : Argument
- { Type = float;
- Default = "0.0"; };
- XmNoffsetModel : Argument
- { Type = integer;
- EnumerationSet = OffsetModel;
- Default = "XmABSOLUTE"; };
- XmNdecimal : Argument
- { Type = string;
- Default = "."; };
-
-\f
-! the user-defined class
-Class
- user_defined : Widget
- {
- ConvenienceFunction = user_defined ;
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-! Fake resource for COMPOUND_STRING_COMPONENT
-Resource
- XmStringComponent : Argument
- { Type = integer;
- EnumerationSet = CompoundStringComponent; };
-
-
-!
-! Dt Enumeration Sets
-!
-EnumerationSet
- DtCharCursorStyle : integer
- { DtTERM_CHAR_CURSOR_BOX;
- DtTERM_CHAR_CURSOR_BAR;
- DtTERM_CHAR_CURSOR_INVISIBLE; };
- DtExecutionPolicy : integer
- { DtHELP_EXECUTE_NONE;
- DtHELP_EXECUTE_QUERY_ALL;
- DtHELP_EXECUTE_QUERY_UNALIASED;
- DtHELP_EXECUTE_ALL; };
- DtHelpType : integer
- { DtHELP_TYPE_TOPIC;
- DtHELP_TYPE_STRING;
- DtHELP_TYPE_MAN_PAGE;
- DtHELP_TYPE_FILE;
- DtHELP_TYPE_DYNAMIC_STRING; };
- DtPaperSize : integer
- { DtHELP_PAPERSIZE_LETTER;
- DtHELP_PAPERSIZE_LEGAL;
- DtHELP_PAPERSIZE_EXECUTIVE;
- DtHELP_PAPERSIZE_A4;
- DtHELP_PAPERSIZE_B5; };
- DtPrintDestination : integer
- { DtPRINT_NO_DESTINATION;
- DtPRINT_TO_PRINTER;
- DtPRINT_TO_FILE; };
- DtPrinterNameMode : integer
- { DtSHORT_NAME;
- DtMEDIUM_NAME;
- DtLONG_NAME; };
- DtPrinterResetConnectionMode : integer
- { DtPRINT_CLOSE_CONNECTION;
- DtPRINT_RELEASE_CONNECTION; };
- DtScrollBarPolicy : integer
- { DtHELP_NO_SCROLLBARS;
- DtHELP_STATIC_SCROLLBARS;
- DtHELP_AS_NEEDED_SCROLLBARS; };
- DtShadowType : integer
- { DtSHADOW_IN;
- DtSHADOW_OUT;
- DtSHADOW_ETCHED_IN;
- DtSHADOW_ETCHED_OUT; };
- DtSetupMode : integer
- { DtPRINT_SETUP_PLAIN;
- DtPRINT_SETUP_XP; };
- DtWorkAreaLocation : integer
- { DtWORK_AREA_NONE;
- DtWORK_AREA_TOP;
- DtWORK_AREA_TOP_AND_BOTTOM;
- DtWORK_AREA_BOTTOM; };
-
-!
-! Dt Widgets
-!
-Class
- DtEditor : Widget
- {
- SuperClass = XmForm;
- ConvenienceFunction = DtCreateEditor;
- Resources
- {
- ! new resources
- DtNautoShowCursorPosition;
- DtNbuttonFontList;
- DtNblinkRate { Default = "500"; };
- DtNcenterToggleLabel;
- DtNchangeAllButtonLabel;
- DtNchangeButtonLabel;
- DtNchangeFieldLabel;
- DtNcolumns;
- DtNcurrentLineLabel;
- DtNcursorPosition;
- DtNcursorPositionVisible;
- DtNdialogTitle;
- DtNeditable;
- DtNfindButtonLabel;
- DtNfindChangeDialogTitle;
- DtNfindFieldLabel;
- DtNformatAllButtonLabel;
- DtNformatParagraphButtonLabel;
- DtNformatSettingsDialogTitle;
- DtNinformationDialogTitle;
- DtNinsertLabel;
- DtNjustifyToggleLabel;
- DtNlabelFontList;
- DtNleftAlignToggleLabel;
- DtNleftMarginFieldLabel;
- DtNmaxLength;
- DtNmisspelledListLabel;
- DtNoverstrike;
- DtNoverstrikeLabel;
- DtNrightAlignToggleLabel;
- DtNrightMarginFieldLabel;
- DtNrows;
- DtNscrollHorizontal;
- DtNscrollLeftSide;
- DtNscrollTopSide;
- DtNscrollVertical;
- DtNshowStatusLine;
- DtNspellDialogTitle;
- DtNspellFilter;
- DtNtextBackground;
- DtNtextDeselectCallback;
- DtNtextForeground;
- DtNtextFontList;
- DtNtextSelectCallback;
- DtNtextTranslations;
- DtNtopCharacter;
- DtNtotalLineCountLabel;
- DtNwordWrap;
- ! inherited resources
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-Class
- DtHelpDialog : Widget
- {
- SuperClass = XmBulletinBoard;
- ParentClass = XmDialogShell;
- ConvenienceFunction = DtCreateHelpDialog;
- DialogClass = True;
- Resources
- {
- ! new resources
- DtNcloseCallback;
- DtNcolumns { Default = "70"; };
- DtNexecutionPolicy;
- DtNhelpFile;
- DtNhelpOnHelpVolume;
- DtNhelpPrint;
- DtNhelpType;
- DtNhelpVolume;
- DtNhyperLinkCallback;
- DtNlocationId;
- DtNmanPage;
- DtNmarginWidth;
- DtNmarginHeight;
- DtNpaperSize;
- DtNprinter;
- DtNrows { Default = "25"; };
- DtNscrollBarPolicy;
- DtNshowNewWindowButton;
- DtNstringData;
- DtNtopicTitle;
- DtNvisiblePathCount;
-
- ! private resources
- ! DtNshowTopLevelButton;
- ! DtNsrchHitPrefixFont;
-
- ! inherited resources
- XmNnavigationType { Default = "dynamic"; };
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-Class
- DtHelpQuickDialog : Widget
- {
- SuperClass = XmBulletinBoard;
- ParentClass = XmDialogShell;
- ConvenienceFunction = DtCreateHelpQuickDialog;
- DialogClass = True;
- Resources
- {
- ! new resources
- DtNbackLabelString;
- DtNcloseCallback;
- DtNcloseLabelString;
- DtNcolumns { Default = "50"; };
- DtNexecutionPolicy;
- DtNhelpFile;
- DtNhelpLabelString;
- DtNhelpOnHelpVolume;
- DtNhelpPrint;
- DtNhelpVolume;
- DtNhelpType;
- DtNhyperLinkCallback;
- DtNlocationId;
- DtNmanPage;
- DtNminimizeButtons;
- DtNmoreLabelString;
- DtNpaperSize;
- DtNprinter;
- DtNprintLabelString;
- DtNrows { Default = "15"; };
- DtNscrollBarPolicy;
- DtNstringData;
- DtNtopicTitle;
- ! inherited resources
- XmNnavigationType { Default = "dynamic"; };
- };
- Controls
- {
- AllWidgetsAndGadgets;
- };
- };
-
-Class
- DtMenuButton : Widget
- {
- SuperClass = XmLabel;
- ConvenienceFunction = DtCreateMenuButton;
- Resources
- {
- ! new resources
- DtNcascadingCallback;
- DtNcascadePixmap;
- DtNsubMenuId;
-
- ! inherited resources
- XmNhighlightThickness { Default = "2"; };
- XmNmarginWidth { Default = "6"; };
- XmNtraversalOn { Default = "True"; };
- };
- Controls {
- XmPopupMenu;
- XmRenderTable;
- };
- };
-
-Class
- DtPrintSetupBox : Widget
- {
- SuperClass = XmBulletinBoard;
- ConvenienceFunction = DtCreatePrintSetupBox;
- Resources
- {
- ! new resources
- DtNcancelCallback;
- DtNclosePrintDisplayCallback;
- DtNcopies;
- DtNdescription;
- DtNfileName;
- DtNminimizeButtons;
- DtNprintCallback;
- DtNprintDestination;
- DtNprinterInfoProc;
- DtNprinterName;
- DtNprintSetupMode;
- DtNselectFileProc;
- DtNselectPrinterProc;
- DtNsetupCallback;
- DtNverifyPrinterProc;
- DtNworkAreaLocation;
-
- ! inherited resources
- XmNnoResize { Default = "True"; };
- };
- Controls {
- AllWidgetsAndGadgets;
- };
- };
-
-Class
- DtPrintSetupDialog : Widget
- {
- SuperClass = DtPrintSetupBox;
- ParentClass = XmDialogShell;
- ConvenienceFunction = DtCreatePrintSetupDialog;
- DialogClass = True;
- Resources
- {
- ! new resources
- ! inherited resources
- };
- Controls {
- AllWidgetsAndGadgets;
- };
- };
-
-Class
- DtTermPrimitive : Widget
- {
- SuperClass = XmPrimitive;
- ConvenienceFunction = DtCreateTermPrimitive;
- Resources
- {
- ! new resources
- DtNallowSendEvents;
- DtNbackgroundIsSelect;
- DtNblinkRate;
- DtNbaseWidth;
- DtNbaseHeight;
- DtNcharCursorStyle;
- DtNcolumns { Default = "80"; };
- DtNconsoleMode;
- DtNcsWidth;
- DtNemulationId;
- DtNheightInc;
- DtNinputVerifyCallback;
- DtNjumpScroll;
- DtNkshMode;
- DtNlogging;
- DtNlogFile;
- DtNlogInhibit;
- DtNmapOnOutput;
- DtNmapOnOutputDelay;
- DtNmarginBell;
- DtNmarginHeight { Default = "2"; };
- DtNmarginWidth { Default = "2"; };
- DtNnMarginBell;
- DtNoutputLogCallback;
- DtNpointerBlank;
- DtNpointerBlankDelay;
- DtNpointerShape;
- DtNpointerColor;
- DtNpointerColorBackground;
- DtNreverseVideo;
- DtNrows { Default = "24"; };
- DtNsaveLines;
- DtNshadowType;
- DtNstatusChangeCallback;
- DtNsubprocessArgv;
- DtNsubprocessCmd;
- DtNsubprocessExec;
- DtNsubprocessLoginShell;
- DtNsubprocessPid;
- DtNsubprocessTerminationCallback;
- DtNsubprocessTerminationCatch;
- DtNtermDevice;
- DtNtermDeviceAllocate;
- DtNtermId;
- DtNtermName;
- DtNtermSlaveName;
- DtNttyModes;
- DtNuserBoldFont;
- DtNuserFont;
- DtNverticalScrollBar;
- DtNvisualBell;
- DtNwidthInc;
-
- ! inherited resources
- XmNhighlightThickness { Default = "2"; };
- XmNtraversalOn { Default = "True"; };
- };
- };
-
-Class
- DtTerm : Widget
- {
- SuperClass = DtTermPrimitive;
- ConvenienceFunction = DtCreateTerm;
- Resources
- {
- ! new resources
- DtNappCursorDefault;
- DtNappKeypadDefault;
- DtNautoWrap;
- DtNc132;
- DtNemulationId { Default = "DtTermWidget"; };
- DtNreverseWrap;
- DtNsunFunctionKeys;
- DtNtermId { Default = "vt220"; };
- DtNtermName { Default = "dtterm"; };
-
- ! commented out
- ! DtNstickyPrevCursor;
- ! DtNstickyNextCursor;
- ! DtNstatusChangeCallback;
- ! DtNverticalScrollBar;
-
- ! inherited resources
- };
- };
-
-Resource
- DtNallowSendEvents : Argument
- { Type = boolean;
- Default = "False"; };
- DtNappCursorDefault : Argument
- { Type = boolean;
- Default = "False"; };
- DtNappKeypadDefault : Argument
- { Type = boolean;
- Default = "False"; };
- DtNautoShowCursorPosition : Argument
- { Type = boolean;
- Default = "True"; };
- DtNautoWrap : Argument
- { Type = boolean;
- Default = "True"; };
- DtNbackLabelString : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNbackgroundIsSelect : Argument
- { Type = boolean;
- Default = "False"; };
- DtNbaseHeight : Argument
- { Type = integer;
- Default = "0"; };
- DtNbaseWidth : Argument
- { Type = integer;
- Default = "0"; };
- DtNblinkRate : Argument
- { Type = integer;
- Default = "250"; };
- DtNbuttonFontList : Argument
- { Type = font_table;
- Default = "dynamic"; };
- DtNc132 : Argument
- { Type = boolean;
- Default = "False"; };
- DtNcancelCallback : Reason
- { };
- DtNcascadePixmap : Argument
- { Type = pixmap;
- Default = "XmUNSPECIFIED_PIXMAP"; };
- DtNcascadingCallback : Reason
- { };
- DtNcenterToggleLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNchangeAllButtonLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNchangeButtonLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNchangeFieldLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNcharCursorStyle : Argument
- { Type = integer;
- EnumerationSet = DtCharCursorStyle;
- Default = "DtTERM_CHAR_CURSOR_BOX"; };
- DtNcloseCallback : Reason
- { };
- DtNcloseLabelString : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNclosePrintDisplayCallback : Reason
- { };
- DtNcolumns : Argument
- { Type = integer;
- Default = "DtUNSPECIFIED"; };
- DtNconsoleMode : Argument
- { Type = boolean;
- Default = "False"; };
- DtNcopies : Argument
- { Type = integer;
- Default = "1"; };
- DtNcsWidth : Argument
- { Type = string;
- Default = "Null"; };
- DtNcurrentLineLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNcursorPosition : Argument
- { Type = integer;
- Default = "0"; };
- DtNcursorPositionVisible : Argument
- { Type = boolean;
- Default = "True"; };
- DtNdescription : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNdialogTitle : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNeditable : Argument
- { Type = boolean;
- Default = "True"; };
- DtNemulationId : Argument
- { Type = string;
- Default = "Null"; };
- DtNexecutionPolicy : Argument
- { Type = integer;
- EnumerationSet = DtExecutionPolicy;
- Default = "DtHELP_EXECUTE_QUERY_UNALIASED"; };
- DtNfileName : Argument
- { Type = string;
- Default = "Null"; };
- DtNfindButtonLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNfindChangeDialogTitle : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNfindFieldLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNformatAllButtonLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNformatParagraphButtonLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNformatSettingsDialogTitle : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNheightInc : Argument
- { Type = integer;
- Default = "0"; };
- DtNhelpFile : Argument
- { Type = string;
- Default = "Null"; };
- DtNhelpLabelString : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNhelpOnHelpVolume : Argument
- { Type = string;
- Default = "Null"; };
- DtNhelpPrint : Argument
- { Type = string;
- Default = "Null"; };
- DtNhelpType : Argument
- { Type = integer;
- EnumerationSet = DtHelpType;
- Default = "DtHELP_TYPE_TOPIC"; };
- DtNhelpVolume : Argument
- { Type = string;
- Default = "Null"; };
- DtNhyperLinkCallback : Reason
- { };
- DtNinformationDialogTitle : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNinputVerifyCallback : Reason
- { };
- DtNinsertLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNjumpScroll : Argument
- { Type = boolean;
- Default = "True"; };
- DtNjustifyToggleLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNkshMode : Argument
- { Type = boolean;
- Default = "False"; };
- DtNlabelFontList : Argument
- { Type = font_table;
- Default = "dynamic"; };
- DtNleftAlignToggleLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNleftMarginFieldLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNlocationId : Argument
- { Type = string;
- Default = "Null"; };
- DtNlogFile : Argument
- { Type = string;
- Default = "Null"; };
- DtNlogInhibit : Argument
- { Type = boolean;
- Default = "False"; };
- DtNlogging : Argument
- { Type = boolean;
- Default = "False"; };
- DtNmanPage : Argument
- { Type = string;
- Default = "Null"; };
- DtNmapOnOutput : Argument
- { Type = boolean;
- Default = "False"; };
- DtNmapOnOutputDelay : Argument
- { Type = integer;
- Default = "0"; };
- DtNmarginBell : Argument
- { Type = boolean;
- Default = "False"; };
- DtNmarginHeight : Argument
- { Type = vertical_float;
- Default = "4"; };
- DtNmarginWidth : Argument
- { Type = horizontal_float;
- Default = "1"; };
- DtNmaxLength : Argument
- { Type = integer;
- Default = "DtUNSPECIFIED"; };
- DtNminimizeButtons : Argument
- { Type = boolean;
- Default = "False"; };
- DtNmisspelledListLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNmoreLabelString : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNnMarginBell : Argument
- { Type = integer;
- Default = "8"; };
- DtNoutputLogCallback : Reason
- { };
- DtNoverstrike : Argument
- { Type = boolean;
- Default = "False"; };
- DtNoverstrikeLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNpaperSize : Argument
- { Type = integer;
- EnumerationSet = DtPaperSize;
- Default = "DtHELP_PAPERSIZE_LETTER"; };
- DtNpointerBlank : Argument
- { Type = boolean;
- Default = "False"; };
- DtNpointerBlankDelay : Argument
- { Type = integer;
- Default = "2"; };
- DtNpointerColor : Argument
- { Type = color;
- Default = "XtDefaultForeground"; };
- DtNpointerColorBackground : Argument
- { Type = color;
- Default = "XtDefaultBackground"; };
- DtNpointerShape : Argument
- { Type = any;
- Default = "xterm"; };
- DtNprintCallback : Reason
- { };
- DtNprintDestination : Argument
- { Type = integer;
- EnumerationSet = DtPrintDestination;
- Default = "DtPRINT_TO_PRINTER"; };
- DtNprintLabelString : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNprintSetupMode : Argument
- { Type = integer;
- EnumerationSet = DtSetupMode;
- Default = "DtPRINT_SETUP_XP"; };
- DtNprinter : Argument
- { Type = string;
- Default = "Null"; };
- DtNprinterInfoProc : Argument
- { Type = any;
- Default = "DtUNSPECIFIED"; };
- DtNprinterName : Argument
- { Type = string;
- Default = "Null"; };
- DtNreverseVideo : Argument
- { Type = boolean;
- Default = "False"; };
- DtNreverseWrap : Argument
- { Type = boolean;
- Default = "False"; };
- DtNrightAlignToggleLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNrightMarginFieldLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNrows : Argument
- { Type = integer;
- Default = "DtUNSPECIFIED"; };
- DtNsaveLines : Argument
- { Type = string;
- Default = "null"; };
- DtNscrollBarPolicy : Argument
- { Type = integer;
- EnumerationSet = DtScrollBarPolicy;
- Default = "DtHELP_AS_NEEDED_SCROLLBARS"; };
- DtNscrollHorizontal : Argument
- { Type = boolean;
- Default = "True"; };
- DtNscrollLeftSide : Argument
- { Type = boolean;
- Default = "UNSPECIFIED"; };
- DtNscrollTopSide : Argument
- { Type = boolean;
- Default = "UNSPECIFIED"; };
- DtNscrollVertical : Argument
- { Type = boolean;
- Default = "True"; };
- DtNselectFileProc : Argument
- { Type = any;
- Default = "default"; };
- DtNselectPrinterProc : Argument
- { Type = any;
- Default = "DtUNSPECIFIED"; };
- DtNsetupCallback : Reason
- { };
- DtNshadowType : Argument
- { Type = integer;
- EnumerationSet = DtShadowType;
- Default = "DtSHADOW_IN"; };
- DtNshowNewWindowButton : Argument
- { Type = boolean;
- Default = "False"; };
- DtNshowStatusLine : Argument
- { Type = boolean;
- Default = "False"; };
- ! DtNshowTopLevelButton : Argument
- ! { Type = boolean;
- ! Default = "False"; };
- DtNspellDialogTitle : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNspellFilter : Argument
- { Type = string;
- Default = "Null"; };
- ! DtNsrchHitPrefixFont : Argument
- ! { Type = string;
- ! Default = "dynamic"; };
- DtNstatusChangeCallback : Reason
- { };
- DtNstickyNextCursor : Argument
- { Type = boolean;
- Default = "False"; };
- DtNstickyPrevCursor : Argument
- { Type = boolean;
- Default = "False"; };
- DtNstringData : Argument
- { Type = string;
- Default = "Null"; };
- DtNsubMenuId : Argument
- { Type = widget_ref;
- Default = "Null"; };
- DtNsubprocessArgv : Argument
- { Type = any;
- Default = "NULL"; };
- DtNsubprocessCmd : Argument
- { Type = string;
- Default = "Null"; };
- DtNsubprocessExec : Argument
- { Type = boolean;
- Default = "True"; };
- DtNsubprocessLoginShell : Argument
- { Type = boolean;
- Default = "False"; };
- DtNsubprocessPid : Argument
- { Type = integer;
- Default = "-1"; };
- DtNsubprocessTerminationCallback : Reason
- { };
- DtNsubprocessTerminationCatch : Argument
- { Type = boolean;
- Default = "True"; };
- DtNsunFunctionKeys : Argument
- { Type = boolean;
- Default = "False"; };
- DtNtermDevice : Argument
- { Type = integer;
- Default = "-1"; };
- DtNtermDeviceAllocate : Argument
- { Type = boolean;
- Default = "True"; };
- DtNtermId : Argument
- { Type = string;
- Default = "Null"; };
- DtNtermName : Argument
- { Type = string;
- Default = "Null"; };
- DtNtermSlaveName : Argument
- { Type = string;
- Default = "Null"; };
- DtNtextBackground : Argument
- { Type = color;
- Default = "DtUNSPECIFIED"; };
- DtNtextDeselectCallback : Reason
- { };
- DtNtextFontList : Argument
- { Type = font_table;
- Default = "dynamic"; };
- DtNtextForeground : Argument
- { Type = color;
- Default = "DtUNSPECIFIED"; };
- DtNtextSelectCallback : Reason
- { };
- DtNtextTranslations : Argument
- { Type = translation_table;
- Default = "Null"; };
- DtNtopCharacter : Argument
- { Type = integer;
- Default = "0"; };
- DtNtopicTitle : Argument
- { Type = string;
- Default = "Null"; };
- DtNtotalLineCountLabel : Argument
- { Type = compound_string;
- Default = "Null"; };
- DtNttyModes : Argument
- { Type = string;
- Default = "Null"; };
- DtNuserBoldFont : Argument
- { Type = font_table;
- Default = "dynamic"; };
- DtNuserFont : Argument
- { Type = font_table;
- Default = "dynamic"; };
- DtNverifyPrinterProc : Argument
- { Type = any;
- Default = "DtUNSPECIFIED"; };
- DtNverticalScrollBar : Argument
- { Type = widget_ref;
- Default = "Null"; };
- DtNvisiblePathCount : Argument
- { Type = integer;
- Default = "7"; };
- DtNvisualBell : Argument
- { Type = boolean;
- Default = "False"; };
- DtNwidthInc : Argument
- { Type = integer;
- Default = "0"; };
- DtNwordWrap : Argument
- { Type = boolean;
- Default = "False"; };
- DtNworkAreaLocation : Argument
- { Type = integer;
- EnumerationSet = DtWorkAreaLocation;
- Default = "DtWORK_AREA_BOTTOM"; };
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: wml.c /main/8 1999/04/16 09:41:47 mgreess $"
-#endif
-#endif
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
- * This is the main program for WML. It declares all global data structures
- * used during a compilation, and during output.
- */
-
-/*
- * WML is a semi-standard Unix application. It reads its input from
- * stdin, which is expected to be a stream containing a WML description
- * of a UIL language. If this stream is successfully parsed and semantically
- * validated, then WML writes a series of standard .h and .dat files into
- * the user directory. The .h files will be used directly to construct
- * the UIL compiler. The .dat files are used by other phases of UIL
- * table generation.
- *
- * The files created by WML are:
- *
- * .h files:
- * UilSymGen.h
- * UilSymArTy.h
- * UilSymRArg.h
- * UilDrmClas.h
- * UilConst.h
- * UilSymReas.h
- * UilSymArTa.h
- * UilSymCtl.h
- * UilSymNam.h
- * .dat files
- * argument.dat
- * reason.dat
- * grammar.dat
- * .mm files
- * wml-uil.mm
- */
-
-#include "wml.h"
-
-#if defined(SYSV) || defined(SVR4)
-#include <fcntl.h>
-#else
-#include <sys/file.h>
-#endif
-#include <stdio.h>
-
-\f
-/*
- * Globals used during WML parsing.
- *
- * WML uses globals exclusively to communicate data during parsing. The
- * current object being constructed is held by these globals, and all
- * routines called from the parse assume correct setting of these globals.
- * This simplisitic approach is possible since the WML description language
- * has no recursive constructs requiring a frame stack.
- */
-
-/*
- * Error and other counts
- */
-int wml_err_count = 0; /* total errors */
-int wml_line_count = 0; /* lines read from input */
-
-/*
- * Dynamic ordered vector of all objects encountered during parse. This
- * is used to detect name collisions, and is the primary order vector
- * used for all other vectors constructed curing the semantic resolution
- * phase of processing.
- */
-DynamicHandleListDef wml_synobj;
-DynamicHandleListDefPtr wml_synobj_ptr = &wml_synobj;
-
-
-/*
- * Dynamic vectors of vectors partitioned and ordered
- * as required by the semantic processing and output routines. All
- * point to resolved objects rather than syntactic objects.
- */
-DynamicHandleListDef wml_obj_datatype; /* datatype objects */
-DynamicHandleListDefPtr wml_obj_datatype_ptr = &wml_obj_datatype;
-
-DynamicHandleListDef wml_obj_enumval; /* enumeration value objects */
-DynamicHandleListDefPtr wml_obj_enumval_ptr = &wml_obj_enumval;
-
-DynamicHandleListDef wml_obj_enumset; /* enumeration set objects */
-DynamicHandleListDefPtr wml_obj_enumset_ptr = &wml_obj_enumset;
-
-DynamicHandleListDef wml_obj_reason; /* reason resource objects */
-DynamicHandleListDefPtr wml_obj_reason_ptr = &wml_obj_reason;
-
-DynamicHandleListDef wml_obj_arg; /* argument resource objects */
-DynamicHandleListDefPtr wml_obj_arg_ptr = &wml_obj_arg;
-
-DynamicHandleListDef wml_obj_child; /* argument resource objects */
-DynamicHandleListDefPtr wml_obj_child_ptr = &wml_obj_child;
-
-DynamicHandleListDef wml_obj_allclass; /* metaclass, widget, gadget */
-DynamicHandleListDefPtr wml_obj_allclass_ptr = &wml_obj_allclass;
-
-DynamicHandleListDef wml_obj_class; /* widget & gadget objects */
-DynamicHandleListDefPtr wml_obj_class_ptr = &wml_obj_class;
-
-DynamicHandleListDef wml_obj_ctrlist; /* controls list objects */
-DynamicHandleListDefPtr wml_obj_ctrlist_ptr = &wml_obj_ctrlist;
-
-DynamicHandleListDef wml_obj_charset; /* charset objects */
-DynamicHandleListDefPtr wml_obj_charset_ptr = &wml_obj_charset;
-
-DynamicHandleListDef wml_tok_sens; /* case-sensitive tokens */
-DynamicHandleListDefPtr wml_tok_sens_ptr = &wml_tok_sens;
-
-DynamicHandleListDef wml_tok_insens; /* case-insensitive tokens */
-DynamicHandleListDefPtr wml_tok_insens_ptr = &wml_tok_insens;
-
-
-/*
- * Routines only accessible in this module
- */
-void wmlInit ();
-
-/*
- * External variables
- */
-extern int yyleng;
-
-
-
-\f
-/*
- * The WML main routine:
- *
- * 1. Initialize global storage
- * 2. Open the input file if there is one
- * 3. Parse the WML description in stdin. Exit on errors
- * 4. Perform semantic validation and resolution. Exit on errors.
- * 5. Output files
- */
-
-int main (argc, argv)
- int argc;
- char **argv;
-
-{
-
-int done;
-int fd; /* input file descriptor */
-
-/*
- * Initialize storage
- */
-wmlInit ();
-
-/*
- * Assume that anything in argv must be an input file. Open it, and
- * dup it to stdin
- */
-if ( argc > 1 )
- {
- if ( (fd=open(argv[1],O_RDONLY)) == -1 )
- printf ("\nCouldn't open file %s", argv[1]);
- else
- dup2 (fd, 0);
- }
-
-/*
- * Process the input
- */
-done = 0;
-while (!done)
- {
-
- /*
- * Parse the input stream
- */
- yyleng = 0; /* initialization safety */
- yyparse ();
- if ( wml_err_count > 0 ) break;
- printf ("\nParse of WML input complete");
-
- /*
- * Perform semantic validation, and construct resolved data structures
- */
- wmlResolveDescriptors ();
- if ( wml_err_count > 0 ) break;
- printf ("\nSemantic validation and resolution complete");
-
- /*
- * Output
- */
- wmlOutput ();
- if ( wml_err_count > 0 ) break;
- printf ("\nWML Uil*.h and wml-uil.mm file creation complete\n");
-
- done = 1;
- }
-
-/*
- * Report inaction on errors
- */
-if ( wml_err_count > 0 )
- {
- printf ("\nWML found %d errors, no or incomplete output produced\n",
- wml_err_count);
- /* Begin fixing the bug CR 4748 */
- exit(1);
- /* End fixing the bug CR 4748 */
- }
-
-return (0);
-
-}
-
-\f
-/*
- * Routine to initialize WML.
- *
- * The main job is to dynamically allocate any dynamic lists to a reasonable
- * initial state.
- */
-void wmlInit ()
-
-{
-
-/*
- * Initialize the list of all syntactic objects
- */
-wmlInitHList (wml_synobj_ptr, 1000, TRUE);
-
-}
-
-yywrap()
-{
-return(1);
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* $XConsortium: wml.h /main/9 1995/08/29 11:10:33 drk $ */
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
- * This file contains the structure and literal definitions required
- * by the WML processor
- */
-
-#if defined(__STDC__)
-#include <stddef.h>
-#else
-#include <stdio.h>
-#endif
-
-#define TRUE 1
-#define FALSE 0
-#define SUCCESS 1
-#define FAILURE 0
-
-/*
- * Generic object pointer
- */
-typedef char *ObjectPtr;
-
-
-/*
- * True and False for attributes, so setting is explicit
- */
-#define WmlAttributeUnspecified 0
-#define WmlAttributeTrue 1
-#define WmlAttributeFalse 2
-
-/*
- * Values of character set direction
- */
-#define WmlCharSetDirectionLtoR 1
-#define WmlCharSetDirectionRtoL 2
-
-/*
- * Values of character set character size
- */
-#define WmlCharSizeOneByte 1
-#define WmlCharSizeTwoByte 2
-#define WmlCharSizeMixed1_2Byte 3
-
-
-/*
- * Upper case and lower case converters
- */
-#define _upper(c) ((c) >= 'a' && (c) <= 'z' ? (c) & 0x5F:(c))
-#define _lower(c) ((c) >= 'A' && (c) <= 'Z' ? (c) | 0x20:(c))
-
-
-/*
- * The Uil token classes which are dealt with WML. Matched to definitions
- * in UilKeyDef.h, although this isn't required.
- */
-#define WmlTokenClassArgument 1
-#define WmlTokenClassCharset 2
-#define WmlTokenClassColor 3
-#define WmlTokenClassEnumval 4
-#define WmlTokenClassFont 5
-#define WmlTokenClassIdentifier 6
-#define WmlTokenClassKeyword 7
-#define WmlTokenClassLiteral 8
-#define WmlTokenClassReason 9
-#define WmlTokenClassReserved 10
-#define WmlTokenClassSpecial 11
-#define WmlTokenClassUnused 12
-#define WmlTokenClassClass 13
-#define WmlTokenClassChild 14
-
-
-\f
-/*
- * Structures for WML objects. Two kinds are created for each object
- * recognized and built as a WML description is read:
- * - A syntactic descriptor, which captures the information parse
- * from the input in pretty much its raw form
- * - A semantically resolved descriptor, in which pointers to
- * other descriptors have been resolved, ordering is done,
- * superclass inheritance is complete, etc.
- */
-
-/*
- * Syntactic structures. These are constructred during input parse.
- */
-
-
-/*
- * A dummy holding only a header. Allows access to the validation field.
- */
-typedef struct
- {
- int validation; /* a unique validation code */
- ObjectPtr rslvdef; /* the resolved object pointer */
- } WmlSynDef, *WmlSynDefPtr;
-
-
-
-/*
- * A class resource descriptor. This a subset of a full resource descriptor,
- * which captures those elements which can be overridden in a class declaration
- */
-#define WmlClassResDefValid 871253
-
-typedef struct WmlSynClassResDefStruct
- {
- int validation; /* WmlClassResDefValid */
- struct WmlSynClassResDefStruct
- *next; /* next descriptor in chain */
- char *name; /* resource name */
- char *type; /* override type name */
- char *dflt; /* override default value */
- short int exclude; /* WmlAttributeTrue if to be excluded */
- } WmlSynClassResDef, *WmlSynClassResDefPtr;
-
-/*
- * A class child descriptor.
- */
-#define WmlClassChildDefValid 780344
-
-typedef struct WmlSynClassChildDefStruct
- {
- int validation; /* WmlClassChildDefValid */
- struct WmlSynClassChildDefStruct
- *next; /* next descriptor in chain */
- char *name; /* child name */
- } WmlSynClassChildDef, *WmlSynClassChildDefPtr;
-
-
-/*
- * A class controls descriptor. It contains elements which can be added
- * to a controls reference.
- */
-
-#define WmlClassCtrlDefValid 7132320
-
-typedef struct WmlSynClassCtrlDefStruct
- {
- int validation; /* WmlClassCtrlDefValid */
- struct WmlSynClassCtrlDefStruct
- *next; /* next descriptor in chain */
- char *name; /* controlled class name */
- } WmlSynClassCtrlDef, *WmlSynClassCtrlDefPtr;
-
-
-/*
- * A class structure. One exists for each Class statement in a WML
- * description.
- */
-#define WmlClassDefValid 93741
-
-#define WmlClassTypeMetaclass 1
-#define WmlClassTypeWidget 2
-#define WmlClassTypeGadget 3
-
-typedef struct WmlSynClassDefStruct
- {
- int validation; /* WmlClassDefValid */
- struct WmlClassDefStruct
- *rslvdef; /* resolved definition */
- short int type; /* from WmlClassType... */
- short int dialog; /* TRUE if a dialog class (has
- window manager decoration, etc) */
- char *name; /* class name */
- char *superclass; /* superclass name */
- char *parentclass; /* parentclass name */
- char *widgetclass; /* widget class name */
- char *int_lit; /* internal literal name */
- char *convfunc; /* convenience function name */
- char *docname; /* name for docs */
- char *ctrlmapto; /* resource controls map to */
- WmlSynClassCtrlDefPtr
- controls; /* list of controlled classes */
- WmlSynClassResDefPtr
- resources; /* list of resources from input */
- WmlSynClassChildDefPtr
- children; /* list of automatic children */
- } WmlSynClassDef, *WmlSynClassDefPtr;
-
-
-/*
- * A controls list structure. One is created for each ControlsList statement
- * in a WML description.
- */
-#define WmlCtrlListDefValid 621298
-
-typedef struct WmlSynCtrlListDefStruct
- {
- int validation; /* WmlCtrlListDefValid */
- struct WmlCtrlListDefStruct
- *rslvdef; /* resolved definition */
- char *name; /* controls list name */
- WmlSynClassCtrlDefPtr
- controls; /* list of controlled classes */
- } WmlSynCtrlListDef, *WmlSynCtrlListDefPtr;
-
-
-/*
- * A resource descriptor. One is created for each Resource statement
- * in a WML description
- */
-#define WmlResourceDefValid 310538
-
-#define WmlResourceTypeArgument 1
-#define WmlResourceTypeReason 2
-#define WmlResourceTypeConstraint 3
-#define WmlResourceTypeSubResource 4
-
-typedef struct WmlSynResourceDefStruct
- {
- int validation; /* WmlResourceDefValid */
- struct WmlResourceDefStruct
- *rslvdef; /* resolved definition */
- short int type; /* from WmlResourceType... */
- char *name; /* resource name */
- char *datatype; /* resource data type */
- char *int_lit; /* internal literal name */
- char *resliteral; /* resource name literal */
- char *enumset; /* enumeration set name */
- char *docname; /* name for docs */
- char *related; /* names related resource */
- char *dflt; /* default value */
- short int xrm_support; /* WmlAttributeTrue if can be
- Xrm resource */
- short int alias_cnt; /* alias count */
- char **alias_list; /* vector of aliass */
- } WmlSynResourceDef, *WmlSynResourceDefPtr;
-
-/*
- * A child descriptor. One is created for each Child statement
- * in a WML description
- */
-#define WmlChildDefValid 229629
-
-typedef struct WmlSynChildDefStruct
- {
- int validation; /* WmlResourceDefValid */
- struct WmlChildDefStruct
- *rslvdef; /* resolved definition */
- char *name; /* child name */
- char *class; /* child class */
- } WmlSynChildDef, *WmlSynChildDefPtr;
-
-
-/*
- * A datatype descriptor
- */
-#define WmlDataTypeDefValid 714210
-
-typedef struct WmlSynDataTypeDefStruct
- {
- int validation; /* WmlDataTypeDefValid */
- struct WmlDataTypeDefStruct
- *rslvdef; /* resolved definition */
- char *name; /* data type name */
- char *int_lit; /* internal literal name */
- char *docname; /* name for docs */
- short int xrm_support; /* WmlAttributeTrue if can be
- Xrm resource */
- } WmlSynDataTypeDef, *WmlSynDataTypeDefPtr;
-
-
-/*
- * An enumeration set values descriptor, as it occurs in the list for
- * an enumeration set descriptor.
- */
-typedef struct WmlSynEnumSetValDefStruct
- {
- int validation; /* WmlEnumValueDefValid */
- struct WmlSynEnumSetValDefStruct
- *next; /* next descriptor in chain */
- char *name; /* enumeration value name */
- } WmlSynEnumSetValDef, *WmlSynEnumSetValDefPtr;
-
-
-/*
- * An enumeration set descriptor
- */
-#define WmlEnumSetDefValid 931184
-
-typedef struct WmlSynEnumSetDefStruct
- {
- int validation; /* WmlEnumSetDefValid */
- struct WmlEnumSetDefStruct
- *rslvdef; /* resolved definition */
- char *name; /* enumeration set name */
- char *datatype; /* enumeration set data type */
- WmlSynEnumSetValDefPtr
- values; /* list of values in set */
- } WmlSynEnumSetDef, *WmlSynEnumSetDefPtr;
-
-
-
-/*
- * An enumeration value descriptor
- */
-#define WmlEnumValueDefValid 172938
-
-typedef struct WmlSynEnumValueDefStruct
- {
- int validation; /* WmlEnumValueDefValid */
- struct WmlEnumValueDefStruct
- *rslvdef; /* resolved definition */
- char *name; /* enumeration value name */
- char *enumlit; /* name of defining literal */
- } WmlSynEnumValueDef, *WmlSynEnumValueDefPtr;
-
-
-/*
- * A charset descriptor
- */
-#define WmlCharSetDefValid 110983
-
-typedef struct WmlSynCharSetDefStruct
- {
- int validation; /* WmlCharSetDefValid */
- struct WmlCharSetDefStruct
- *rslvdef; /* resolved definition */
- char *name; /* data type name */
- char *int_lit; /* internal literal name */
- char *xms_name; /* identifying XmString name */
- short int direction; /* WmlCharSetDirection... */
- short int parsedirection; /* WmlCharSetDirection... */
- short int charsize; /* WmlCharSize... */
- short int alias_cnt; /* alias count */
- char **alias_list; /* vector of aliases */
- } WmlSynCharSetDef, *WmlSynCharSetDefPtr;
-
-
-\f
-/*
- * Data structures constructed during semantic validation. Each points
- * as required to syntactic data structures. These are typically accessed
- * from ordered pointer vectors.
- */
-
-
-/*
- * A datatype descriptor. It extends the syntactic element by assigning
- * a code to the descriptor.
- */
-typedef struct WmlDataTypeDefStruct
- {
- struct WmlSynDataTypeDefStruct
- *syndef; /* syntactic definition */
- char *tkname; /* name for generating literals */
- } WmlDataTypeDef, *WmlDataTypeDefPtr;
-
-
-/*
- * A charset descriptor. It extends the syntactic element by assigning
- * a code to the descriptor.
- */
-typedef struct WmlCharSetDefStruct
- {
- struct WmlSynCharSetDefStruct
- *syndef; /* syntactic definition */
- char *tkname; /* name for generating literals */
- short int sym_code; /* code value for literals */
- } WmlCharSetDef, *WmlCharSetDefPtr;
-
-/*
- * A child descriptor. It extends the syntactic element by assigning
- * a code and a pointer to the class to the descriptor.
- */
-typedef struct WmlChildDefStruct
- {
- struct WmlSynChildDefStruct
- *syndef; /* syntactic definition */
- char *tkname; /* name for generating literals */
- short int sym_code; /* code value for literals */
- struct WmlClassDefStruct
- *class; /* class structure */
- struct WmlClassChildDefStruct
- *ref_ptr; /* used dynamically for search */
- } WmlChildDef, *WmlChildDefPtr;
-
-/*
- * An element in the values list of an enumeration set. These elements have
- * separate lists in order to deal with the possibility of an enumeration
- * value which is a member of more than one list.
- */
-typedef struct WmlEnumSetValDefStruct
- {
- struct WmlEnumSetValDefStruct
- *next; /* next value in list */
- struct WmlEnumValueDefStruct
- *value; /* value descriptor for element */
- } WmlEnumSetValDef, *WmlEnumSetValDefPtr;
-
-
-/*
- * A resolved enumeration set descriptor
- */
-typedef struct WmlEnumSetDefStruct
- {
- struct WmlSynEnumSetDefStruct
- *syndef; /* syntactic definition */
- char *tkname; /* name for generating literals */
- short int sym_code; /* code value for literals */
- WmlDataTypeDefPtr dtype_def; /* data type */
- short int values_cnt; /* count of # of values in set */
- WmlEnumSetValDefPtr
- values; /* list of values in set */
- } WmlEnumSetDef, *WmlEnumSetDefPtr;
-
-
-/*
- * A resolved enumeration value descriptor
- */
-typedef struct WmlEnumValueDefStruct
- {
- struct WmlSynEnumValueDefStruct
- *syndef; /* syntactic definition */
- short int sym_code; /* code value for literals */
- } WmlEnumValueDef, *WmlEnumValueDefPtr;
-
-
-/*
- * A resource descriptor
- */
-typedef struct WmlResourceDefStruct
- {
- struct WmlSynResourceDefStruct
- *syndef; /* syntactic definition */
- char *tkname; /* name for generating literals */
- short int sym_code; /* code value for literals */
- WmlDataTypeDefPtr dtype_def; /* data type for base definition */
- WmlEnumSetDefPtr enumset_def; /* enumeration set if specified */
- short int related_code; /* if non-0, the sym_code for the
- related (count) argument */
- short int xrm_support; /* if AttributeTrue, then the resource
- can be set in Xrm. Resolved
- from either explicit setting or
- data type setting */
- struct WmlClassDefStruct
- *ref_class; /* used for membership sort */
- struct WmlClassResDefStruct
- *ref_ptr; /* used dynamically for search */
- } WmlResourceDef, *WmlResourceDefPtr;
-
-
-/*
- * A resource descriptor with overrides which is a member of the resource
- * list of a class descriptor.
- */
-typedef struct WmlClassResDefStruct
- {
- struct WmlClassResDefStruct
- *next; /* next resource in list */
- WmlResourceDefPtr act_resource; /* actual resource descriptor */
- WmlDataTypeDefPtr over_dtype; /* overriding data type */
- char *dflt; /* overriding default */
- int exclude; /* WmlAttributeTrue if to be excluded */
- } WmlClassResDef, *WmlClassResDefPtr;
-
-/*
- * A child descriptor which is a member of the children
- * list of a class descriptor.
- */
-typedef struct WmlClassChildDefStruct
- {
- struct WmlClassChildDefStruct
- *next; /* next child in list */
- WmlChildDefPtr act_child; /* actual child descriptor */
- } WmlClassChildDef, *WmlClassChildDefPtr;
-
-
-/*
- * An element for the controls list of a resolved class descriptor
- */
-typedef struct WmlClassCtrlDefStruct
- {
- struct WmlClassCtrlDefStruct
- *next; /* next control in list */
- struct WmlClassDefStruct
- *ctrl; /* class being controlled */
- } WmlClassCtrlDef, *WmlClassCtrlDefPtr;
-
-
-
-/*
- * A resolved class descriptor. It has a pointer to its superclass, and
- * a resource list consisting of its inherited resources followed by
- * its own resources.
- */
-typedef struct WmlClassDefStruct
- {
- struct WmlSynClassDefStruct
- *syndef; /* syntactic definition */
- struct WmlClassDefStruct
- *superclass; /* superclass structure */
- struct WmlClassDefStruct
- *parentclass; /* parentclass structure */
- char *tkname; /* name to be used in literals.
- int_lit or name if no int_lit */
- short int sym_code; /* code value for literals */
- short int inherit_done; /* TRUE when inheritance complete */
- WmlClassResDefPtr arguments; /* linked argument list */
- WmlClassResDefPtr reasons; /* lined reason list */
- WmlClassCtrlDefPtr controls; /* list of controlled classes.
- Controls list references will
- be expanded into this list. */
- WmlClassChildDefPtr children; /* list of automatic children */
- struct WmlClassDefStruct
- *variant; /* the gadget class for a widget */
- struct WmlClassDefStruct
- *nondialog; /* the non-dialog ancestor of a
- dialog widget */
- WmlResourceDefPtr ctrlmapto; /* the resource controls map to */
- struct WmlClassCtrlDefStruct
- *ref_ptr; /* used dynamically for search */
- } WmlClassDef, *WmlClassDefPtr;
-
-
-/*
- * A resolved controls list descriptor.
- */
-typedef struct WmlCtrlListDefStruct
- {
- struct WmlSynCtrlListDefStruct
- *syndef; /* syntactic definition */
- WmlClassCtrlDefPtr controls; /* list of controlled classes */
- } WmlCtrlListDef, *WmlCtrlListDefPtr;
-
-
-\f
-/*
- * Data structures used to locate and order objects in various ways.
- */
-
-/*
- * Token structure used to create ordered token lists for generation of
- * UilKeyTab.h. The token string is in the order vector.
- */
-typedef struct WmlKeyWTokenStruct
- {
- int class; /* token class, WmlTokenClass... */
- ObjectPtr objdef; /* object definition (resolved) */
- } WmlKeyWToken, *WmlKeyWTokenPtr;
-
-
-/*
- * A grammar token as obtained from the UIL grammar file (Uil.y)
- */
-typedef struct WmlGrammarTokenStruct
- {
- int class; /* token class, WmlTokenClass... */
- char *token; /* token name (literal) */
- int val; /* token id as value */
- } WmlGrammarToken, *WmlGrammarTokenPtr;
-
-
-/*
- * A list element which allows association of a name with an object.
- * Typically used to construct ordered lists.
- */
-typedef struct
- {
- char *objname; /* object name */
- ObjectPtr objptr; /* the object */
- } ObjectHandleDef, *ObjectHandleDefPtr;
-
-/*
- * A dynamic handle element list, extensible by malloc'ing more space.
- */
-typedef struct
- {
- int cnt; /* # entries in use */
- int max; /* max # entries available */
- int ordered; /* TRUE if list is lexicographically
- ordered by object name */
- ObjectHandleDefPtr hvec; /* vector of handle entries */
- } DynamicHandleListDef, *DynamicHandleListDefPtr;
-
-
-\f
-/*
- * Global declarations
- */
-
-/*
- * Defined in wml.c
- */
-extern int wml_err_count; /* total errors */
-extern int wml_line_count; /* lines read from input */
-extern DynamicHandleListDefPtr
- wml_synobj_ptr; /* syntactic object list */
-
-extern DynamicHandleListDefPtr wml_obj_datatype_ptr;
-extern DynamicHandleListDefPtr wml_obj_enumval_ptr;
-extern DynamicHandleListDefPtr wml_obj_enumset_ptr;
-extern DynamicHandleListDefPtr wml_obj_reason_ptr;
-extern DynamicHandleListDefPtr wml_obj_arg_ptr;
-extern DynamicHandleListDefPtr wml_obj_child_ptr;
-extern DynamicHandleListDefPtr wml_obj_allclass_ptr;
-extern DynamicHandleListDefPtr wml_obj_class_ptr;
-extern DynamicHandleListDefPtr wml_obj_ctrlist_ptr;
-extern DynamicHandleListDefPtr wml_obj_charset_ptr;
-
-extern DynamicHandleListDefPtr wml_tok_sens_ptr;
-extern DynamicHandleListDefPtr wml_tok_insens_ptr;
-
-
-
-
-/*
- * Defined in wmlutils.c
- */
-extern char *wmlAllocateString (); /* dynamic string copy */
-extern void wmlUpperCaseString (); /* convert to upper case */
-extern void wmlInitHList (); /* init dynamic list */
-extern void wmlResizeHList (); /* resize a list */
-extern void wmlClearHList (); /* clear a list for reuse */
-extern int wmlFindInHList (); /* find name in list */
-extern void wmlInsertInHList (); /* generic list insert */
-extern void wmlInsertInKeyList (); /* specialized list insert */
-extern WmlClassResDefPtr wmlResolveResIsMember ();
- /* is resource in class? */
-extern WmlClassChildDefPtr wmlResolveChildIsMember ();
- /* is child in class? */
-
-/*
- * Defined in wmlsynbld.c
- */
-extern char yystringval[]; /* any string value */
-extern char yynameval[]; /* any name (identifier) */
-extern int yytknval1; /* terminal token value 1 */
-extern int yytknval2; /* terminal token value 2 */
-extern ObjectPtr wml_cur_obj; /* object being constructed */
-extern ObjectPtr wml_cur_subobj; /* current subobject */
-extern void wmlCreateClass ();
-extern void wmlAddClassAttribute ();
-extern void wmlAddClassResource ();
-extern void wmlAddClassResourceAttribute ();
-extern void wmlAddClassControl ();
-extern void wmlAddCtrList ();
-extern void wmlCreateResource ();
-extern void wmlCreateDatatype ();
-extern void wmlAddResourceAttribute ();
-extern void wmlAddDatatypeAttribute ();
-extern void wmlAddCtrListControl ();
-extern void wmlCreateEnumSet ();
-extern void wmlAddEnumSetValue ();
-extern void wmlCreateEnumValue ();
-extern void wmlAddEnumValueAttribute ();
-extern void wmlCreateCharset ();
-extern void wmlAddCharsetAttribute ();
-extern void LexIssueError ();
-
-
-/*
- * Defined in wmlresolve.c
- */
-extern void wmlResolveDescriptors ();
-extern void wmlMarkReferencePointers ();
-
-
-/*
- * Defined in wmlouth.c
- */
-extern void wmlOutputHFiles ();
-
-
-/*
- * Defined in wmloutdat.c
- */
-extern void wmlOutputDatFiles ();
-
-/*
- * Define in wmloutp1 or wmloutp2
- */
-extern void wmlOutput ();
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: wmldbcreate.c /main/8 1997/04/14 12:55:30 dbl $"
-#endif
-#endif
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
- * This is the program creates binary databases from WML output.
- */
-
-
-#include <stdio.h>
-#ifndef X_NOT_STDC_ENV
-#include <stdlib.h>
-#endif
-
-#include <Mrm/MrmWidget.h>
-#include <Xm/Xm.h>
-#include <Xm/MwmUtil.h>
-
-#include <Dt/Editor.h>
-#include <Dt/Help.h>
-#include <Dt/HelpDialog.h>
-#include <Dt/HelpQuickD.h>
-#include <Dt/MenuButton.h>
-#include <Dt/Print.h>
-#include <Dt/TermPrim.h>
-#include <Dt/Term.h>
-
-
-
-/*
- * User supplied widget public.h and/or private.h files are to be added here
- * #ifdef for automatic use in uilwmdcreate script file
- */
-
-
-/*
- * End of User supplied widget files
- */
-
-
-#include "UilDBDef.h"
-#include "UilLexPars.h"
-
-#include "UilSymGen.h" /* from WML */
-#include "UilSymArTy.h" /* from WML */
-#include "UilSymRArg.h" /* from WML */
-#include "UilSymArTa.h" /* from WML */
-#include "UilSymReas.h" /* from WML */
-#include "UilSymCtl.h" /* from WML */
-#include "UilConst.h" /* from WML */
-#include "UilSymNam.h" /* from WML */
-#include "UilSymEnum.h" /* from WML */
-#include "UilSymCSet.h" /* from WML */
-#include "UilUrmClas.h" /* from WML */
-#include "UilKeyTab.h" /* from WML */
-#include "UilSymChCl.h" /* from WML */
-#include "UilSymChTa.h" /* from WML */
-
-void emit_globals();
-void emit_header(_db_header_ptr header);
-void emit_chars(int table_id);
-void emit_ints_and_string( int table_id);
-void emit_char_table( int table_id);
-void emit_length_and_string( int table_id);
-void emit_shorts( int table_id);
-void emit_int_and_table_shorts( int table_id);
-void emit_ints( int table_id);
-
-FILE *bfile, *afile;
-int DEBUG=FALSE;
-char outfilename[80];
-char debugfilename[80];
-\f
-main(argc, argv)
-int argc;
-char **argv;
-{
- _db_header header;
-
- strcpy(outfilename, "motif.wmd");
- strcpy(debugfilename, "motif.dbg");
-
- for (argc--, argv++; argc; argc--, argv++)
- {
- if (strcmp("-debug", *argv) == 0)
- {
- DEBUG=TRUE;
- }
- else if ((strcmp("-o", *argv) == 0))
- {
- strcpy(outfilename, argv[1]);
- }
- }
-
- bfile = fopen(outfilename, "w");
- if (bfile == (FILE *) NULL)
- {
- printf("\nCouldnt't open %s", outfilename);
- exit (1);
- }
- if (DEBUG)
- {
- afile = fopen(debugfilename, "w");
- if (afile == (FILE *) NULL)
- {
- printf("\nCouldn't open %s", debugfilename);
- exit (1);
- }
- }
-
- emit_globals();
-
-/*
- * UilConst
- * UilSymArty
- * UilSymCset - parts of it
- * UilSymChCl
- */
- emit_chars(Constraint_Tab);
- emit_chars(Argument_Type_Table_Value);
- emit_chars(Charset_Wrdirection_Table);
- emit_chars(Charset_Parsdirection_Table);
- emit_chars(Charset_Charsize_Table);
- emit_chars(Child_Class_Table);
-/*
- * UilKeyTab
- */
- emit_ints_and_string (Key_Table);
- emit_ints_and_string (Key_Table_Case_Ins);
-/*
- * UilSymArTa
- * UilSymCtl
- * UilSymReas
- * UilSymChTa
- */
- emit_char_table (Allowed_Argument_Table);
- emit_char_table (Allowed_Control_Table);
- emit_char_table (Allowed_Reason_Table);
- emit_char_table (Allowed_Child_Table);
-/*
- * UilSymCset
- * UilSymNam
- * UilUrmClas
- */
- emit_length_and_string (Charset_Xmstring_Names_Table);
- emit_length_and_string (Charset_Lang_Names_Table);
- emit_length_and_string (Uil_Widget_Names);
- emit_length_and_string (Uil_Argument_Names);
- emit_length_and_string (Uil_Reason_Names);
- emit_length_and_string (Uil_Enumval_names);
- emit_length_and_string (Uil_Charset_Names);
- emit_length_and_string (Uil_Widget_Funcs);
- emit_length_and_string (Uil_Argument_Toolkit_Names);
- emit_length_and_string (Uil_Reason_Toolkit_Names);
- emit_length_and_string (Uil_Children_Names);
-/*
- * UilSymCset
- * UilSymEnum
- * UilSymRArg
- * UilUrmClas
- */
- emit_shorts (Charset_Lang_Codes_Table);
- emit_shorts (Argument_Enum_Set_Table);
- emit_shorts (Related_Argument_Table);
- emit_shorts (Uil_Gadget_Funcs);
- emit_shorts (Uil_Urm_Nondialog_Class);
- emit_shorts (Uil_Urm_Subtree_Resource);
-/*
- * UilSymEnum
- */
- emit_int_and_table_shorts(Enum_Set_Table);
-/*
- * UilSymEnum
- */
- emit_ints (Enumval_Values_Table);
-
- exit (0);
-}
-
-\f
-void emit_globals()
-{
- _db_globals globals;
-
- globals.version = DB_Compiled_Version;
- globals.uil_max_arg = uil_max_arg;
- globals.uil_max_charset = uil_max_charset;
- globals.charset_lang_table_max = charset_lang_table_max;
- globals.uil_max_object = uil_max_object;
- globals.uil_max_reason = uil_max_reason;
- globals.uil_max_enumval = uil_max_enumval;
- globals.uil_max_enumset = uil_max_enumset;
- globals.key_k_keyword_count = key_k_keyword_count;
- globals.key_k_keyword_max_length = key_k_keyword_max_length;
- globals.uil_max_child = uil_max_child;
-
- fwrite (&globals, sizeof (_db_globals), 1, bfile);
- if (DEBUG)
- fprintf(afile, "%d %d %d %d %d %d %d %d %d %d ", globals.version,
- globals.uil_max_arg, globals.uil_max_charset,
- globals.charset_lang_table_max, globals.uil_max_object,
- globals.uil_max_reason, globals.uil_max_enumval,
- globals.uil_max_enumset, globals.key_k_keyword_count,
- globals.key_k_keyword_max_length);
- }
-
-
-\f
-void emit_header(header)
-_db_header_ptr header;
-{
-
- fwrite (header, sizeof(_db_header), 1, bfile);
- if (DEBUG)
- fprintf(afile,
- "\n\nTableId=%d, NumEntries=%d, TableSize=%d \n",
- header->table_id, header->num_items, header->table_size);
- }
-
-
-\f
-void emit_chars(table_id)
- int table_id;
-{
- _db_header header;
- unsigned char *ptr;
- int i;
-
- switch (table_id)
- {
- case Constraint_Tab:
- /*
- * NOTE: The first entry is not used but we copy it anyway
- */
- header.table_size = sizeof(constraint_tab_vec);
- header.num_items = header.table_size;
- header.table_id = Constraint_Tab;
- ptr = constraint_tab;
- break;
- case Argument_Type_Table_Value:
- /*
- * NOTE: The first entry is not used but we copy it anyway
- */
- header.table_size = sizeof(argument_type_table_vec);
- header.num_items = header.table_size;
- header.table_id = Argument_Type_Table_Value;
- ptr = argument_type_table;
- break;
- case Charset_Wrdirection_Table:
- /*
- * NOTE: The first entry is not used but we copy it anyway
- */
- header.table_size = sizeof(charset_wrdirection_table_vec);
- header.num_items = header.table_size;
- header.table_id = Charset_Wrdirection_Table;
- ptr = charset_writing_direction_table;
- break;
- case Charset_Parsdirection_Table:
- /*
- * NOTE: The first entry is not used but we copy it anyway
- */
- header.table_size = sizeof(charset_parsdirection_table_vec);
- header.num_items = header.table_size;
- header.table_id = Charset_Parsdirection_Table;
- ptr = charset_parsing_direction_table;
- break;
- case Charset_Charsize_Table:
- /*
- * NOTE: The first entry is not used but we copy it anyway
- */
- header.table_size = sizeof(charset_charsize_table_vec);
- header.num_items = header.table_size;
- header.table_id = Charset_Charsize_Table;
- ptr = charset_character_size_table;
- break;
- case Child_Class_Table:
- /*
- * NOTE: The first entry is not used but we copy it anyway
- */
- header.table_size = sizeof(child_class_table_vec);
- header.num_items = header.table_size;
- header.table_id = Child_Class_Table;
- ptr = child_class_table;
- break;
- }
-
- emit_header(&header);
-
- fwrite (ptr, header.table_size, 1, bfile);
- if (DEBUG)
- {
- for (i=0; i<=header.num_items; i++)
- {
- fprintf(afile, "%d ", ptr[i]);
- }
- }
-}
-
-\f
-void emit_ints_and_string(table_id)
- int table_id;
-{
- _db_header header;
- key_keytable_entry_type *table;
- int i;
-
- switch (table_id)
- {
- /*
- * All tables are zero based unless otherwise noted
- */
- case Key_Table:
- header.table_size = sizeof(key_table_vec);
- header.num_items = key_k_keyword_count;
- header.table_id = Key_Table;
- table = key_table;
- break;
- case Key_Table_Case_Ins:
- header.table_size = sizeof(key_table_case_ins_vec);
- header.num_items = key_k_keyword_count;
- header.table_id = Key_Table_Case_Ins;
- table = key_table_case_ins;
- break;
- }
- emit_header(&header);
-
- fwrite (table, header.table_size, 1, bfile);
- for (i=0; i<header.num_items; i++)
- {
- fwrite (table[i].at_name, table[i].b_length + 1, 1, bfile);
- if (DEBUG)
- fprintf (afile, "%d %d %d %d %s", table[i].b_class, table[i].b_subclass,
- table[i].b_length, table[i].b_token, table[i].at_name);
- }
-
-}
-
-\f
-void emit_char_table(table_id)
-int table_id;
-{
- unsigned char **table;
- _db_header header;
- unsigned char *entry_vec;
- int i, j;
- int num_bits = (uil_max_object + 7) / 8;
-
- switch (table_id)
- {
- /*
- * All tables are 1 based unless otherwise specified
- */
- case Allowed_Argument_Table:
- header.table_size = sizeof(allowed_argument_table_vec);
- header.num_items = uil_max_arg;
- header.table_id = Allowed_Argument_Table;
- table = allowed_argument_table;
- break;
- case Allowed_Control_Table:
- header.table_size = sizeof(allowed_control_table_vec);
- header.num_items = uil_max_object;
- header.table_id = Allowed_Control_Table;
- table = allowed_control_table;
- break;
- case Allowed_Reason_Table:
- header.table_size = sizeof(allowed_reason_table_vec);
- header.num_items = uil_max_reason;
- header.table_id = Allowed_Reason_Table;
- table = allowed_reason_table;
- break;
- case Allowed_Child_Table:
- header.table_size = sizeof(allowed_child_table_vec);
- header.num_items = uil_max_child;
- header.table_id = Allowed_Child_Table;
- table = allowed_child_table;
- break;
- }
-
- emit_header(&header);
-
- for (i=1; i<=header.num_items; i++) /* First not used */
- {
- entry_vec = table[i];
- fwrite (entry_vec, sizeof (char) * num_bits, 1, bfile);
- if (DEBUG)
- {
- for (j=0; j<num_bits; j++)
- {
- fprintf (afile, "%d, ", entry_vec[j]);
- }
- fprintf (afile, "\n");
- }
- }
-}
-
-\f
-void emit_length_and_string(table_id)
-int table_id;
-{
- _db_header header;
- int *lengths;
- char *string_table;
- char **table;
- int i;
-
- switch (table_id)
- {
- /*
- * all the tables are 1 based unless otherwise documented
- */
- case Charset_Xmstring_Names_Table:
- header.table_size = sizeof(charset_xmstring_names_table_vec);
- header.num_items = uil_max_charset;
- header.table_id = Charset_Xmstring_Names_Table;
- table = charset_xmstring_names_table;
- break;
- case Charset_Lang_Names_Table:
- /*
- * This table is 0 based
- */
- header.table_size = sizeof(charset_lang_names_table_vec);
- header.num_items = charset_lang_table_max - 1;
- header.table_id = Charset_Lang_Names_Table;
- table = charset_lang_names_table;
- break;
- case Uil_Widget_Names:
- header.table_size = sizeof(uil_widget_names_vec);
- header.num_items = uil_max_object;
- header.table_id = Uil_Widget_Names;
- table = uil_widget_names ;
- break;
- case Uil_Argument_Names:
- header.table_size = sizeof(uil_argument_names_vec);
- header.num_items = uil_max_arg;
- header.table_id = Uil_Argument_Names;
- table = uil_argument_names;
- break;
- case Uil_Reason_Names:
- header.table_size = sizeof(uil_reason_names_vec);
- header.num_items = uil_max_reason;
- header.table_id = Uil_Reason_Names;
- table = uil_reason_names;
- break;
- case Uil_Enumval_names:
- header.table_size = sizeof(uil_enumval_names_vec);
- header.num_items = uil_max_enumval;
- header.table_id = Uil_Enumval_names;
- table = uil_enumval_names;
- break;
- case Uil_Charset_Names:
- header.table_size = sizeof(uil_charset_names_vec);
- header.num_items = uil_max_charset;
- header.table_id = Uil_Charset_Names;
- table = uil_charset_names;
- break;
- case Uil_Widget_Funcs:
- header.table_size = sizeof(uil_widget_funcs_vec);
- header.num_items = uil_max_object;
- header.table_id = Uil_Widget_Funcs;
- table = uil_widget_funcs;
- break;
- case Uil_Argument_Toolkit_Names:
- header.table_size = sizeof(uil_argument_toolkit_names_vec);
- header.num_items = uil_max_arg;
- header.table_id = Uil_Argument_Toolkit_Names;
- table = uil_argument_toolkit_names;
- break;
- case Uil_Reason_Toolkit_Names:
- header.table_size = sizeof(uil_reason_toolkit_names_vec);
- header.num_items = uil_max_reason;
- header.table_id = Uil_Reason_Toolkit_Names;
- table = uil_reason_toolkit_names;
- break;
- case Uil_Children_Names:
- header.table_size = sizeof(uil_child_names_vec);
- header.num_items = uil_max_child;
- header.table_id = Uil_Children_Names;
- table = uil_child_names ;
- break;
- }
-
- emit_header(&header);
-
- lengths = (int *) malloc (sizeof (int) * (header.num_items + 1));
-
- for (i=0; i<=header.num_items; i++)
- {
- if (table[i] != NULL)
- {
- /*
- * Add one to the length for the null terminator
- */
- lengths[i] = strlen(table[i]) + 1;
- }
- else
- {
- lengths[i] = 0;
- }
- if (DEBUG)
- fprintf (afile, "%d ", lengths[i]);
- }
- fwrite (lengths, sizeof (int) * (header.num_items + 1), 1, bfile);
- for (i=0; i<=header.num_items; i++)
- {
- if (lengths[i])
- {
- /*
- * assumed lengths[i] = lengths[i] * sizeof(char)
- * Add one for the null terminator
- */
- fwrite (table[i], lengths[i] + 1, 1, bfile);
- if (DEBUG)
- fprintf (afile, "%s ", table[i]);
- }
- }
- free (lengths);
-}
-
-\f
-void emit_shorts(table_id)
- int table_id;
-{
- _db_header header;
- unsigned short int *ptr;
- int i;
-
- switch (table_id)
- {
- /*
- * All tables are 1 based unless otherwise noted
- */
- case Charset_Lang_Codes_Table:
- /*
- * 0 based table
- */
- header.table_size = sizeof(charset_lang_codes_table_vec);
- header.num_items = charset_lang_table_max - 1;
- header.table_id = Charset_Lang_Codes_Table;
- ptr = charset_lang_codes_table;
- break;
- case Argument_Enum_Set_Table:
- header.table_size = sizeof(argument_enumset_table_vec);
- header.num_items = uil_max_arg;
- header.table_id = Argument_Enum_Set_Table;
- ptr = argument_enumset_table;
- break;
- case Related_Argument_Table:
- header.table_size = sizeof(related_argument_table_vec);
- header.num_items = uil_max_arg;
- header.table_id = Related_Argument_Table;
- ptr = related_argument_table;
- break;
- case Uil_Gadget_Funcs:
- header.table_size = sizeof(uil_gadget_variants_vec);
- header.num_items = uil_max_object;
- header.table_id = Uil_Gadget_Funcs;
- ptr = uil_gadget_variants;
- break;
- case Uil_Urm_Nondialog_Class:
- header.table_size = sizeof(uil_urm_nondialog_class_vec);
- header.num_items = uil_max_object;
- header.table_id = Uil_Urm_Nondialog_Class;
- ptr = uil_urm_nondialog_class;
- break;
- case Uil_Urm_Subtree_Resource:
- header.table_size = sizeof(uil_urm_subtree_resource_vec);
- header.num_items = uil_max_object;
- header.table_id = Uil_Urm_Subtree_Resource;
- ptr = uil_urm_subtree_resource;
- break;
- }
-
- emit_header(&header);
-
- fwrite (ptr, header.table_size, 1, bfile);
- if (DEBUG)
- {
- for (i=0; i<header.num_items; i++)
- {
- fprintf(afile, "%d ", ptr[i]);
- }
- }
-}
-
-\f
-void emit_int_and_table_shorts(table_id)
- int table_id;
-{
- _db_header header;
- UilEnumSetDescDef *table;
- int j, i;
- unsigned short int *value_vec;
-
- switch (table_id)
- {
- /*
- * All tables are 1 based unless otherwise noted
- */
- case Enum_Set_Table:
- header.table_size = sizeof(enum_set_table_vec);
- header.num_items = uil_max_enumset;
- header.table_id = Enum_Set_Table;
- table = enum_set_table;
- break;
- }
-
- emit_header(&header);
- fwrite (table, header.table_size, 1, bfile);
- for (i=0; i<=header.num_items; i++) /* first is not used */
- {
- if (table[i].values_cnt)
- {
- fwrite (table[i].values, sizeof (short) * table[i].values_cnt, 1, bfile);
- }
- }
-}
-
-\f
-void emit_ints(table_id)
- int table_id;
-{
- _db_header header;
- int *ptr;
- int i;
-
- switch (table_id)
- /*
- * all tables are 1 based unless otherwise noted
- */
- {
- case Enumval_Values_Table:
- header.table_size = sizeof(enumval_values_table_vec);
- header.num_items = uil_max_enumval;
- header.table_id = Enumval_Values_Table;
- ptr = enumval_values_table;
- break;
- }
-
- emit_header(&header);
-
- fwrite (ptr, header.table_size, 1, bfile);
- if (DEBUG)
- {
- for (i=0; i<header.num_items; i++)
- {
- fprintf(afile, "%d ", ptr[i]);
- }
- }
-}
-
+++ /dev/null
-%{
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
- */
-/*
- * HISTORY
- */
-#if defined(__STDC__)
-#include <string.h>
-#endif
-
-#ifndef XmConst
-#if (defined(__STDC__) && __STDC__) || !defined( NO_CONST )
-#define XmConst const
-#else
-#define XmConst
-#endif /* __STDC__ */
-#endif /* XmConst */
-
-#ifdef YY_BUFFER_SIZE
-#define BUF_SIZE YY_BUFFER_SIZE
-#else
-#define BUF_SIZE 8192
-#endif
-
-char yystringval[BUF_SIZE]; /* any string value */
-char yynameval[BUF_SIZE]; /* any identifier (name) */
-int yytknval1; /* terminal token value 1 */
-int yytknval2; /* terminal token value 2 */
-
-%}
-
-%p 3000
-%%
-
-[ \t\f] {}
-
-[\n] { wml_line_count += 1; }
-
-"Class" { return CLASS; }
-"Resource" { return RESOURCE; }
-"DataType" { return DATATYPE; }
-"ControlList" { return CONTROLLIST; }
-"EnumerationSet" { return ENUMERATIONSET; }
-"EnumerationValue" { return ENUMERATIONVALUE; }
-"CharacterSet" { return CHARACTERSET; }
-"Child" { return CHILD; }
-
-"DocName" { return DOCNAME; }
-"ConvenienceFunction" { return CONVFUNC; }
-"Alias" { return ALIAS; }
-"Type" { return TYPE; }
-"ResourceLiteral" { return RESOURCELITERAL; }
-"Related" { return RELATED; }
-"InternalLiteral" { return INTERNALLITERAL; }
-"Constraint" { return CONSTRAINT; }
-"Exclude" { return EXCLUDE;}
-"Resources" { return RESOURCES; }
-"SuperClass" { return SUPERCLASS; }
-"ParentClass" { return PARENTCLASS; }
-"Controls" { return CONTROLS; }
-"WidgetClass" { return WIDGETCLASS; }
-"DialogClass" { return DIALOGCLASS; }
-"Default" { return DEFAULT; }
-"EnumLiteral" { return ENUMLITERAL; }
-"XmStringCharsetName" { return XMSTRINGCHARSETNAME; }
-"FontListElementTag" { return XMSTRINGCHARSETNAME; }
-"Direction" { return DIRECTION; }
-"ParseDirection" { return PARSEDIRECTION; }
-"CharacterSize" { return CHARACTERSIZE; }
-"ControlsMapToResource" { return CTRLMAPSRESOURCE; }
-"Children" { return CHILDREN; }
-
-"MetaClass" { return METACLASS;}
-"Widget" { return WIDGET;}
-"Gadget" { return GADGET;}
-"Argument" { return ARGUMENT;}
-"Reason" { return REASON;}
-"Constraint" { return CONSTRAINT;}
-"SubResource" { return SUBRESOURCE;}
-"True" { return ATTRTRUE; }
-"False" { return ATTRFALSE; }
-"LeftToRight" { return LEFTTORIGHT; }
-"RightToLeft" { return RIGHTTOLEFT; }
-"OneByte" { return ONEBYTE; }
-"TwoByte" { return TWOBYTE; }
-"MixedOneAndTwoByte" { return MIXED1_2BYTE; }
-
-":" { return COLON; }
-";" { return SEMICOLON; }
-"=" { return EQUALS; }
-"{" { return LBRACE; }
-"}" { return RBRACE; }
-
-"!"[^\n]* {}
-
-"#"[^\n]* {}
-
-[a-zA-Z_][a-zA-Z0-9$_]* { /* string without quotes */
- strcpy (yystringval, (XmConst char *) yytext);
- return STRING;
- }
-
-\"[^"\n]*\\ { /* escaped character in the string */
- yymore();
- }
-
-\"[^"\n]*\" { /* String in quotes */
- strncpy(yystringval, (XmConst char *) yytext+1, yyleng - 2);
- yystringval[yyleng-2] = '\0' ;
- return STRING;
- }
-\"[^"\n]* {
- printf ("\nUnterminated string near %s, line %d",
- yytext, wml_line_count);
- return ERRORTOKEN;
- }
-
-. {
- printf ("\nEncountered illegal character '%c', line %d",
- yytext[0], wml_line_count);
- return ERRORTOKEN;
- }
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: wmlouth.c /main/8 1995/08/29 11:10:46 drk $"
-#endif
-#endif
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
- * This module contains routines responsible for writing the .h files
- * produced by WML. All files are written into the current directory.
- *
- * Input:
- * The resolved objects
- *
- * Output:
- * UilSymGen.h
- * UilSymArTy.h
- * UilSymChCl.h
- * UilSymRArg.h
- * UilUrmClas.h
- * UilConst.h
- * UilSymReas.h
- * UilSymArTa.h
- * UilSymChTa.h
- * UilSymCtl.h
- * UilSymNam.h
- * UilSymEnum.h
- * UilSymCSet.h
- */
-
-
-#include "wml.h"
-
-#if defined(__STDC__)
-#include <string.h>
-#endif
-#include <stdio.h>
-
-
-/*
- * Routines used only in this module
- */
-void wmlOutputUilSymGen ();
-void wmlOutputUilSymArTy ();
-void wmlOutputUilSymChCl ();
-void wmlOutputUilSymRArg ();
-void wmlOutputUilUrmClas ();
-void wmlOutputUilConst ();
-void wmlOutputUilSymReas ();
-void wmlOutputUilSymArTa ();
-void wmlOutputUilSymChTa ();
-void wmlOutputUilSymCtl ();
-void wmlOutputUilSymNam ();
-void wmlOutputUilSymEnum ();
-void wmlOutputUilSymCSet ();
-
-/*
- * globals
- */
-
-static char *canned_warn =
-"/*\n\
-**\tThis file is automatically generated. Do not edit it by hand.\n\
-**/\n";
-
-/*
- * Used to create masks for bytes in bit vectors. Accessed by bit numbers
- * from 1 - 8.
- */
-static char *bit_masks[] = {""
- ," | 1" /* bit 1 */
- ," | 2" /* bit 2 */
- ," | 4" /* bit 3 */
- ," | 8" /* bit 4 */
- ," | 16" /* bit 5 */
- ," | 32" /* bit 6 */
- ," | 64" /* bit 7 */
- ," | 128"}; /* bit 8 */
-
-/*
- * To pick up maximum code values
- */
-static int max_object_code = 0;
-static int max_reason_code = 0;
-static int max_arg_code = 0;
-static int max_enumset_code = 0;
-static int max_enumval_code = 0;
-static int max_charset_code = 0;
-static int max_child_code = 0;
-
-
-\f
-/*
- * Output control routine, which simply outputs each .h file in turn.
- */
-
-void wmlOutputHFiles ()
-
-{
-
-wmlOutputUilSymGen ();
-wmlOutputUilSymArTy ();
-wmlOutputUilSymChCl ();
-wmlOutputUilSymRArg ();
-wmlOutputUilUrmClas ();
-wmlOutputUilConst ();
-wmlOutputUilSymReas ();
-wmlOutputUilSymArTa ();
-wmlOutputUilSymChTa ();
-wmlOutputUilSymCtl ();
-wmlOutputUilSymNam ();
-wmlOutputUilSymEnum ();
-wmlOutputUilSymCSet ();
-
-}
-
-
-\f
-/*
- * Routine to write out UilSymGen.h
- *
- * This file defines the sym_k... literals for UIL. Each set of literals
- * typiclly increases monotonically from 1, with 0 used as en error value.
- *
- * sym_k_<class>_object
- * <class> is widget class name in lexicographic order
- * gadgets are not include.
- *
- * bit masks for table access
- *
- * sym_k_<reason>_reason
- * literals specifying all reasons, lexicographically ordered
- *
- * sym_k_<argument>_arg
- * literals for all arguments, lexicographically ordered.
- * Constraints are included, and ordered with the arguments.
- *
- * sym_k_<child>_child
- * literals for all automatic children, lexicographically ordered.
- *
- * sym_k_<enumset>_enumset
- * literals naming each enumeration set, lexicographically ordered
- *
- * Fixed literals naming character set character sizes
- * sym_k_<charset>_charset
- * literals naming each character set, lexicographically ordered
- */
-
-void wmlOutputUilSymGen ()
-
-{
-
-char *canned1 =
-"\n/* Define literals for objects */\n";
-
-
-char *canned3 =
-"\n/* Define literals for reasons */\n\n";
-
-
-char *canned4 =
-"\n/* Define literals for arguments */\n\n";
-
-char *canned5 =
-"\n/* Define literals for enumeration sets */\n\n";
-
-char *canned6 =
-"\n/* Define literals for enumeration values */\n\n";
-
-char *canned7 =
-"\n/* Define literals for character sets */\n\n";
-
-char *canned8 =
-"\n/* Define literals for automatic children */\n\n";
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-WmlClassDefPtr clsobj; /* class object */
-WmlDataTypeDefPtr datobj; /* data type object */
-WmlResourceDefPtr resobj; /* resource object */
-WmlEnumSetDefPtr enumsetobj; /* enumeration set object */
-WmlEnumValueDefPtr enumvalobj; /* enumeration value object */
-WmlCharSetDefPtr charsetobj; /* character set object */
-WmlChildDefPtr childobj; /* child object */
-
-/*
- * Open the output file. Write the canned header stuff
- */
-outfil = fopen ("UilSymGen.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilSymGen.h");
- return;
- }
-fprintf (outfil, canned_warn);
-
-/*
- * Write the sym_k..._object literals
- */
-fprintf (outfil, canned1);
-for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- fprintf (outfil, "#define sym_k_%s_object\t%d\n",
- clsobj->tkname,
- clsobj->sym_code);
- if ( clsobj->sym_code > max_object_code )
- max_object_code = clsobj->sym_code;
- }
-
-/*
- * Define the sym_k_..._reason literals
- */
-fprintf (outfil, canned3);
-for ( ndx=0 ; ndx<wml_obj_reason_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[ndx].objptr;
- fprintf (outfil, "#define sym_k_%s_reason\t%d\n",
- resobj->tkname,
- resobj->sym_code);
- if ( resobj->sym_code > max_reason_code )
- max_reason_code = resobj->sym_code;
- }
-
-/*
- * Define the sym_k_..._arg literals
- */
-fprintf (outfil, canned4);
-for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- fprintf (outfil, "#define sym_k_%s_arg\t%d\n",
- resobj->tkname,
- resobj->sym_code);
- if ( resobj->sym_code > max_arg_code )
- max_arg_code = resobj->sym_code;
- }
-
-/*
- * Define the sym_k_..._enumset structs and literals
- */
-fprintf (outfil, canned5);
-for ( ndx=0 ; ndx<wml_obj_enumset_ptr->cnt ; ndx++ )
- {
- enumsetobj = (WmlEnumSetDefPtr) wml_obj_enumset_ptr->hvec[ndx].objptr;
- fprintf (outfil, "#define sym_k_%s_enumset\t%d\n",
- enumsetobj->tkname,
- enumsetobj->sym_code);
- if ( enumsetobj->sym_code > max_enumset_code )
- max_enumset_code = enumsetobj->sym_code;
- }
-
-/*
- * Define the sym_k_..._enumval literals
- */
-fprintf (outfil, canned6);
-for ( ndx=0 ; ndx<wml_obj_enumval_ptr->cnt ; ndx++ )
- {
- enumvalobj = (WmlEnumValueDefPtr) wml_obj_enumval_ptr->hvec[ndx].objptr;
- fprintf (outfil, "#define sym_k_%s_enumval\t%d\n",
- enumvalobj->syndef->name,
- enumvalobj->sym_code);
- if ( enumvalobj->sym_code > max_enumval_code )
- max_enumval_code = enumvalobj->sym_code;
- }
-
-/*
- * Define the sym_k_..._charsize literals
- * Define the sym_k_..._charset literals
- */
-fprintf (outfil, canned7);
-for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- {
- charsetobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
- fprintf (outfil, "#define sym_k_%s_charset\t%d\n",
- charsetobj->syndef->name,
- charsetobj->sym_code);
- if ( charsetobj->sym_code > max_charset_code )
- max_charset_code = charsetobj->sym_code;
- }
-
-/*
- * Define the sym_k_..._child literals
- */
-fprintf (outfil, canned8);
-for ( ndx=0 ; ndx<wml_obj_child_ptr->cnt ; ndx++ )
- {
- childobj = (WmlChildDefPtr) wml_obj_child_ptr->hvec[ndx].objptr;
- fprintf (outfil, "#define sym_k_%s_child\t%d\n",
- childobj->syndef->name,
- childobj->sym_code);
- if ( childobj->sym_code > max_child_code )
- max_child_code = childobj->sym_code;
- }
-
-/*
- * close the output file
- */
-printf ("\nCreated UilSymGen.h");
-fclose (outfil);
-
-}
-
-
-\f
-/*
- * Routine to write out UilSymChCl.h
- *
- * A table of classes accessed by child type (sym_k_<child>_child, in
- * the form
- * ...
- * sym_k_<class>_class,
- */
-
-void wmlOutputUilSymChCl ()
-
-{
-
-char *canned1 =
-"/* Table of the class type of children\n\
- The table is indexed by child with each entry the\n\
- permitted class for that child.\n\
-*/\n\
-\n\
-static unsigned char child_class_table_vec[] =\n\
- {\n\
- 0,\n";
-
-char *canned1a =
-" };\n\
-externaldef(uil_sym_glbl) unsigned char *child_class_table =\n\
-\t child_class_table_vec;\n";
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-WmlClassDefPtr classobj; /* data type object */
-WmlChildDefPtr childobj; /* resource object */
-
-
-/*
- * Open the output file. Write canned header.
- */
-outfil = fopen ( "UilSymChCl.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilSymChCL.h");
- return;
- }
-fprintf (outfil, canned_warn);
-
-/*
- * Create table entries, similar to writing sym_k...
- */
-fprintf (outfil, canned1);
-for ( ndx=0 ; ndx<wml_obj_child_ptr->cnt ; ndx++ )
- {
- childobj = (WmlChildDefPtr) wml_obj_child_ptr->hvec[ndx].objptr;
- classobj = childobj->class;
- fprintf (outfil, " sym_k_%s_object,\n",
- classobj->tkname);
- }
-fprintf (outfil, canned1a);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilSymChCl.h");
-fclose (outfil);
-
-}
-
-\f
-/*
- * Routine to write out UilSymArTy.h
- *
- * A table of data types accessed by argument type (sym_k_<arg>_arg, in
- * the form
- * ...
- * sym_k_<data_type>_value,
- */
-
-void wmlOutputUilSymArTy ()
-
-{
-
-char *canned1 =
-"/* Table of the types of arguments\n\
- The table is indexed by argument with each entry the\n\
- permitted type for that argument.\n\
-*/\n\
-\n\
-static unsigned char argument_type_table_vec[] =\n\
- {\n\
- 0,\n";
-
-char *canned1a =
-" };\n\
-externaldef(uil_sym_glbl) unsigned char *argument_type_table =\n\
-\t argument_type_table_vec;\n";
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-WmlDataTypeDefPtr datobj; /* data type object */
-WmlResourceDefPtr resobj; /* resource object */
-
-
-/*
- * Open the output file. Write canned header.
- */
-outfil = fopen ( "UilSymArTy.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilSymArTy.h");
- return;
- }
-fprintf (outfil, canned_warn);
-
-/*
- * Create table entries, similar to writing sym_k...
- */
-fprintf (outfil, canned1);
-for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- datobj = resobj->dtype_def;
- fprintf (outfil, " sym_k_%s_value,\n",
- datobj->tkname);
- }
-fprintf (outfil, canned1a);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilSymArTy.h");
-fclose (outfil);
-
-}
-
-
-\f
-/*
- * Routine to write out UilSymRArg.h
- *
- * Related argument table
- */
-
-void wmlOutputUilSymRArg ()
-
-{
-
-char *canned1 =
-"/* Related argument table. Each non-zero entry is the code\n\
- of the related argument.\n\
- */\n\
-\n\
-static unsigned short int related_argument_table_vec[] =\n\
- {\n\
- 0,\n";
-
-char *canned1a =
-" };\n\
-externaldef(uil_sym_glbl) unsigned short int *related_argument_table =\n\
-\t\trelated_argument_table_vec;\n";
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-WmlResourceDefPtr resobj; /* resource object */
-
-
-/*
- * Open the output file. Write canned header.
- */
-outfil = fopen ( "UilSymRArg.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilSymRArg.h");
- return;
- }
-fprintf (outfil, canned_warn);
-
-/*
- * Create table entries, similar to writing sym_k...
- */
-fprintf (outfil, canned1);
-for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- fprintf (outfil, " %d,\n",
- resobj->related_code);
- }
-fprintf (outfil, canned1a);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilSymRArg.h");
-fclose (outfil);
-
-}
-
-
-\f
-/*
- * Routine to write out UilUrmClas.h
- *
- * Table of convenience function names indexed by the sym_k_<class> literal
- * for both widgets and gadgets
- * Table of resource names indexed by the sym_k_<argument>_arg and
- * sym_k_<reason>_reason codes.
- */
-
-void wmlOutputUilUrmClas ()
-
-{
-
-char *canned1 =
-"\n/* Define mapping of UIL widget types to convenience functions. */\n\
-static char *uil_widget_funcs_vec[] = {\n\
- \"\",\t /* NOT USED */\n";
-
-char *canned2 =
-"};\n\
-externaldef(uil_sym_glbl) char **uil_widget_funcs = uil_widget_funcs_vec;\n\
-\n\
-/* Define mapping of UIL widget classes to matching gadget class. */\n\
-static unsigned short int uil_gadget_variants_vec[] = {\n\
- 0,\t /* NOT USED */\n";
-
-char *canned3 =
-"};\n\
-externaldef(uil_sym_glbl) unsigned short int *uil_gadget_variants =\n\
-\t\tuil_gadget_variants_vec;\n\
-\n\
-/* Define mapping of dialog types to non-dialog URM widget classes. */\n\
-static unsigned short int uil_urm_nondialog_class_vec[] = {\n\
- 0,\t/* NOT USED */\n";
-
-char *canned4 =
-"};\n\
-externaldef(uil_sym_glbl) unsigned short int *uil_urm_nondialog_class =\n\
-\t\tuil_urm_nondialog_class_vec;\n\
-\n\
-/* Define mapping of widget controls to a (subtree) resource. */\n\
-static unsigned short int uil_urm_subtree_resource_vec[] = {\n\
- 0,\t/* NOT USED */\n";
-
-char *canned5 =
-"};\n\
-externaldef(uil_sym_glbl) unsigned short int *uil_urm_subtree_resource =\n\
-\t\tuil_urm_subtree_resource_vec;\n\
-\n\
-/* Define mapping of arguments to toolkit names. */\n\
-static char *uil_argument_toolkit_names_vec[] = {\n\
- \"\",\t /* NOT USED */\n";
-
-char *canned6 =
-"};\n\
-externaldef(uil_sym_glbl) char **uil_argument_toolkit_names =\n\
-\t\tuil_argument_toolkit_names_vec;\n\
-\n\
-/* Define mapping of reasons to toolkit names. */\n\
-static char *uil_reason_toolkit_names_vec[] = {\n\
- \"\",\t/* NOT USED */\n";
-
-char *canned7 =
-"};\n\
-externaldef(uil_sym_glbl) char **uil_reason_toolkit_names =\n\
-\t\tuil_reason_toolkit_names_vec;\n";
-
-
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-WmlClassDefPtr clsobj; /* class object */
-WmlSynClassDefPtr synobj; /* syntactic object */
-WmlClassDefPtr varobj; /* variant (widget) class object */
-WmlResourceDefPtr resobj; /* argument/reason object */
-WmlSynResourceDefPtr synres; /* arg/reason syntactic object */
-WmlResourceDefPtr mapresobj; /* controls map to resource object */
-
-
-/*
- * Open the output file. Write canned header.
- */
-outfil = fopen ( "UilUrmClas.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilUrmClas.h");
- return;
- }
-fprintf (outfil, canned_warn);
-
-/*
- * Write entries for widgets
- */
-fprintf (outfil, canned1);
-for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- if ( clsobj->sym_code == 0 ) continue;
- synobj = clsobj->syndef;
- if ( synobj->int_lit != NULL )
- fprintf (outfil, " \"%s\",\n", synobj->convfunc);
- else
- fprintf (outfil, " \"%s\",\t\n", synobj->convfunc);
- }
-fprintf (outfil, canned2);
-
-/*
- * Write entries for gadget variants of widget classes
- */
-for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- if ( clsobj->sym_code == 0 ) continue;
- varobj = clsobj->variant;
- synobj = clsobj->syndef;
- if ( varobj==NULL || synobj->type==WmlClassTypeGadget )
- fprintf (outfil, " 0,\n");
- else
- {
- synobj = varobj->syndef;
- if ( synobj->int_lit != NULL )
- fprintf (outfil, " sym_k_%s_object,\n",
- synobj->int_lit);
- else
- fprintf (outfil, " sym_k_%s_object,\n",
- synobj->name);
- }
- }
-fprintf (outfil, canned3);
-
-/*
- * Write entries for non-dialog widgets
- */
-for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- if ( clsobj->sym_code == 0 ) continue;
- varobj = clsobj->nondialog;
- synobj = clsobj->syndef;
- if ( varobj == NULL )
- fprintf (outfil, " 0,\n");
- else
- {
- synobj = varobj->syndef;
- if ( synobj->int_lit != NULL )
- fprintf (outfil, " sym_k_%s_object,\n",
- synobj->int_lit);
- else
- fprintf (outfil, " sym_k_%s_object,\n",
- synobj->name);
- }
- }
-fprintf (outfil, canned4);
-
-/*
- * Write entries for the resource a widget's controls map to
- */
-for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- if ( clsobj->sym_code == 0 ) continue;
- synobj = clsobj->syndef;
- mapresobj = clsobj->ctrlmapto;
- if ( mapresobj == NULL )
- fprintf (outfil, " 0,\n");
- else
- fprintf (outfil, " sym_k_%s_arg,\n", mapresobj->tkname);
- }
-fprintf (outfil, canned5);
-
-/*
- * Write entries for arguments
- */
-for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- synres = resobj->syndef;
- if ( resobj->sym_code == 0 ) continue;
- fprintf (outfil, " %s,\n",
- synres->resliteral);
- }
-fprintf (outfil, canned6);
-
-/*
- * Write entries for reasons
- */
-for ( ndx=0 ; ndx<wml_obj_reason_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[ndx].objptr;
- synres = resobj->syndef;
- if ( resobj->sym_code == 0 ) continue;
- fprintf (outfil, " %s,\n",
- synres->resliteral);
- }
-fprintf (outfil, canned7);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilUrmClas.h");
-fclose (outfil);
-
-}
-
-
-\f
-/*
- * Routine to write out UilConst.h
- *
- * A bit vector showing which arguments are constraints.
- */
-
-void wmlOutputUilConst ()
-
-{
-
-char *canned1 =
-"/* Table indexed by argument indicating whether\n\
- argument is a constraint (TRUE) or a regular\n\
- argument (FALSE). Each entry is one bit.\n\
- Index and mask macros are defined to simplify\n\
- access to the table\n\
-*/\n\
-\n\
-static unsigned char constraint_tab_vec[] = {\n";
-
-char *canned1a =
-"};\n\
-externaldef(uil_sym_glbl) unsigned char *constraint_tab =\n\
-\t\tconstraint_tab_vec;\n";
-
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-WmlResourceDefPtr resobj; /* resource object */
-WmlSynResourceDefPtr synobj; /* syntactic object */
-char maskbuf[100]; /* to constuct each mask */
-int bitno; /* current bit number, from code */
-
-/*
- * Open the output file. Write canned header.
- */
-outfil = fopen ( "UilConst.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilConst.h");
- return;
- }
-fprintf (outfil, canned_warn);
-
-/*
- * Process the arguments in code order. We start with 1, and write out
- * the mask after processing 8 codes.
- */
-fprintf (outfil, canned1);
-strcpy (maskbuf, "0");
-for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- synobj = resobj->syndef;
- bitno = resobj->sym_code % 8;
- if ( bitno == 0 ) bitno = 8;
- if ( synobj->type == WmlResourceTypeConstraint )
- strcat (maskbuf, bit_masks[bitno]);
- if ( bitno == 8 )
- {
- fprintf (outfil, "%s,\n", maskbuf);
- strcpy (maskbuf, "0");
- }
- }
-if ( bitno != 8 )
- fprintf (outfil, "%s", maskbuf);
-fprintf (outfil, canned1a);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilConst.h");
-fclose (outfil);
-
-}
-
-
-\f
-/*
- * Routine to write out UilSymReas.h
- *
- * This file defines the reasons supported by each class. For each
- * reason, there is a bit vector with the bit for each supporting class
- * turned on if the reason is supported. There is then a vector pointing
- * to these bit vectors for all reasons. This vector is accessed by
- * sym_k_..._reason to find the reasons bit vector, then by sym_k_..._object
- * to check the bit.
- */
-
-void wmlOutputUilSymReas ()
-
-{
-
-char *canned1 =
-"\n/*\n\
- * Bit vectors for each reason. The entries in the vector correspond\n\
- * to each class.\n\
- */\n";
-
-char *bvechdr =
-"\n\
-/* sym_k_%s_reason */\n\
-static unsigned char reason_class_vec%d[] =\n\
- {\n";
-
-char *canned2 =
-"\n/*\n\
- * Table of bit vectors accessed by sym_k_..._reason\n\
- */\n\
-static unsigned char *allowed_reason_table_vec[] =\n\
- {\n\
- NULL,\t/* UNUSED */\n";
-
-char *canned3 =
-" };\n\
-externaldef(uil_sym_glbl) unsigned char **allowed_reason_table =\n\
-\t\tallowed_reason_table_vec;\n";
-
-FILE *outfil; /* output file */
-int resndx; /* outer loop index */
-WmlResourceDefPtr resobj; /* current reason */
-int clsndx; /* inner loop index */
-WmlClassDefPtr clsobj; /* current class object */
-WmlClassResDefPtr resref; /* class' resource reference */
-int itemno; /* item in bye */
-char maskbuf[500]; /* current mask buffer */
-char itembuf[100]; /* for current item */
-int donl; /* TRUE if append \n to mask */
-
-
-/*
- * Open the output file. Write canned header.
- */
-outfil = fopen ( "UilSymReas.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilSymReas.h");
- return;
- }
-fprintf (outfil, canned_warn);
-fprintf (outfil, canned1);
-
-/*
- * Generate the bit vectors for each class. Outer loop on the reason code,
- * inner loop on the class code.
- */
-for ( resndx=0 ; resndx<wml_obj_reason_ptr->cnt ; resndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[resndx].objptr;
- fprintf (outfil, bvechdr, resobj->tkname, resobj->sym_code);
-
- /*
- * inner loop on widget class.
- */
- strcpy (maskbuf, " ");
- for ( clsndx=0 ; clsndx<wml_obj_class_ptr->cnt ; clsndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[clsndx].objptr;
- itemno = (clsobj->sym_code+1) % 8;
- donl = FALSE;
- resref = wmlResolveResIsMember (resobj, clsobj->reasons);
- if ( resref != NULL )
- if ( resref->exclude != WmlAttributeTrue )
- {
- sprintf (itembuf, " _BIT_MASK(sym_k_%s_object) |",
- clsobj->tkname);
- strcat (maskbuf, itembuf);
- donl = TRUE;
- }
- if ( donl )
- strcat (maskbuf, "\n ");
- if ( itemno == 0 )
- {
- fprintf (outfil, "%s 0", maskbuf);
- strcpy (maskbuf, ",");
- }
- }
- if ( itemno != 0 )
- fprintf (outfil, "%s 0};\n", maskbuf);
- else
- fprintf (outfil, "};\n");
- }
-
-/*
- * Write the vector of vectors.
- */
-fprintf (outfil, canned2);
-for ( resndx=0 ; resndx<wml_obj_reason_ptr->cnt ; resndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[resndx].objptr;
- fprintf (outfil, " reason_class_vec%d,\n", resobj->sym_code);
- }
-fprintf (outfil, canned3);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilSymReas.h");
-fclose (outfil);
-
-}
-
-
-\f
-/*
- * Routine to write out UilSymArTa.h
- *
- * This file defines the arguments supported by each class. For each
- * argument, there is a bit vector with the bit for each supporting class
- * turned on if the argument is supported. There is then a vector pointing
- * to these bit vectors for all arguments. This vector is accessed by
- * sym_k_..._arg to find the arguments bit vector, then by sym_k_..._object
- * to check the bit.
- */
-
-void wmlOutputUilSymArTa ()
-
-{
-
-char *canned1 =
-"\n/*\n\
- * Bit vectors for each argument. The entries in the vector correspond\n\
- * to each class.\n\
- */\n";
-
-char *bvechdr =
-"\n\
-/* sym_k_%s_arg */\n\
-static unsigned char arg_class_vec%d[] =\n\
- {\n";
-
-char *canned2 =
-"\n/*\n\
- * Table of bit vectors accessed by sym_k_..._arg\n\
- */\n\
-static unsigned char *allowed_argument_table_vec[] =\n\
- {\n\
- NULL,\t/* UNUSED */\n";
-
-char *canned3 =
-" };\n\
-externaldef(uil_sym_glbl) unsigned char **allowed_argument_table =\n\
-\t\tallowed_argument_table_vec;\n";
-
-FILE *outfil; /* output file */
-int resndx; /* outer loop index */
-WmlResourceDefPtr resobj; /* current argument */
-int clsndx; /* inner loop index */
-WmlClassDefPtr clsobj; /* current class object */
-WmlClassResDefPtr resref; /* class' resource reference */
-int itemno; /* item in bye */
-char maskbuf[500]; /* current mask buffer */
-char itembuf[100]; /* for current item */
-int donl; /* TRUE if append \n to mask */
-
-
-/*
- * Open the output file. Write canned header.
- */
-outfil = fopen ( "UilSymArTa.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilSymArTa.h");
- return;
- }
-fprintf (outfil, canned_warn);
-fprintf (outfil, canned1);
-
-/*
- * Generate the bit vectors for each class. Outer loop on the argument code,
- * inner loop on the class code.
- */
-for ( resndx=0 ; resndx<wml_obj_arg_ptr->cnt ; resndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[resndx].objptr;
- fprintf (outfil, bvechdr, resobj->tkname, resobj->sym_code);
-
- /*
- * inner loop on widget class.
- */
- strcpy (maskbuf, " ");
- for ( clsndx=0 ; clsndx<wml_obj_class_ptr->cnt ; clsndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[clsndx].objptr;
- itemno = (clsobj->sym_code+1) % 8;
- donl = FALSE;
- resref = wmlResolveResIsMember (resobj, clsobj->arguments);
- if ( resref != NULL )
- if ( resref->exclude != WmlAttributeTrue )
- {
- sprintf (itembuf, " _BIT_MASK(sym_k_%s_object) |",
- clsobj->tkname);
- strcat (maskbuf, itembuf);
- donl = TRUE;
- }
- if ( donl )
- strcat (maskbuf, "\n ");
- if ( itemno == 0 )
- {
- fprintf (outfil, "%s 0", maskbuf);
- strcpy (maskbuf, ",");
- }
- }
- if ( itemno != 0 )
- fprintf (outfil, "%s 0};\n", maskbuf);
- else
- fprintf (outfil, "};\n");
- }
-
-/*
- * Write the vector of vectors.
- */
-fprintf (outfil, canned2);
-for ( resndx=0 ; resndx<wml_obj_arg_ptr->cnt ; resndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[resndx].objptr;
- fprintf (outfil, " arg_class_vec%d,\n", resobj->sym_code);
- }
-fprintf (outfil, canned3);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilSymArTa.h");
-fclose (outfil);
-
-}
-
-\f
-/*
- * Routine to write out UilSymChTa.h
- *
- * This file defines the automatic children supported by each class. For each
- * child, there is a bit vector with the bit for each supporting class
- * turned on if the child is supported. There is then a vector pointing
- * to these bit vectors for all children. This vector is accessed by
- * sym_k_..._child to find the child's bit vector, then by sym_k_..._object
- * to check the bit.
- */
-
-void wmlOutputUilSymChTa ()
-
-{
-
-char *canned1 =
-"\n/*\n\
- * Bit vectors for each child. The entries in the vector correspond\n\
- * to each class.\n\
- */\n";
-
-char *bvechdr =
-"\n\
-/* sym_k_%s_child */\n\
-static unsigned char child_class_vec%d[] =\n\
- {\n";
-
-char *canned2 =
-"\n/*\n\
- * Table of bit vectors accessed by sym_k_..._child\n\
- */\n\
-static unsigned char *allowed_child_table_vec[] =\n\
- {\n\
- NULL,\t/* UNUSED */\n";
-
-char *canned3 =
-" };\n\
-externaldef(uil_sym_glbl) unsigned char **allowed_child_table =\n\
-\t\tallowed_child_table_vec;\n";
-
-FILE *outfil; /* output file */
-int childndx; /* outer loop index */
-WmlChildDefPtr childobj; /* current argument */
-int clsndx; /* inner loop index */
-WmlClassDefPtr clsobj; /* current class object */
-WmlClassChildDefPtr childref; /* class' child reference */
-int itemno; /* item in byte */
-char maskbuf[500]; /* current mask buffer */
-char itembuf[100]; /* for current item */
-int donl; /* TRUE if append \n to mask */
-
-
-/*
- * Open the output file. Write canned header.
- */
-outfil = fopen ( "UilSymChTa.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilSymChTa.h");
- return;
- }
-fprintf (outfil, canned_warn);
-fprintf (outfil, canned1);
-
-/*
- * Generate the bit vectors for each class. Outer loop on the child code,
- * inner loop on the class code.
- */
-for ( childndx=0 ; childndx<wml_obj_child_ptr->cnt ; childndx++ )
- {
- childobj = (WmlChildDefPtr) wml_obj_child_ptr->hvec[childndx].objptr;
- fprintf (outfil, bvechdr, childobj->tkname, childobj->sym_code);
-
- /*
- * inner loop on widget class.
- */
- strcpy (maskbuf, " ");
- for ( clsndx=0 ; clsndx<wml_obj_class_ptr->cnt ; clsndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[clsndx].objptr;
- itemno = (clsobj->sym_code+1) % 8;
- donl = FALSE;
- childref = wmlResolveChildIsMember (childobj, clsobj->children);
- if ( childref != NULL )
- {
- sprintf (itembuf, " _BIT_MASK(sym_k_%s_object) |", clsobj->tkname);
- strcat (maskbuf, itembuf);
- donl = TRUE;
- }
- if ( donl )
- strcat (maskbuf, "\n ");
- if ( itemno == 0 )
- {
- fprintf (outfil, "%s 0", maskbuf);
- strcpy (maskbuf, ",");
- }
- }
- if ( itemno != 0 )
- fprintf (outfil, "%s 0};\n", maskbuf);
- else
- fprintf (outfil, "};\n");
- }
-
-/*
- * Write the vector of vectors.
- */
-fprintf (outfil, canned2);
-for ( childndx=0 ; childndx<wml_obj_child_ptr->cnt ; childndx++ )
- {
- childobj = (WmlChildDefPtr) wml_obj_child_ptr->hvec[childndx].objptr;
- fprintf (outfil, " child_class_vec%d,\n", childobj->sym_code);
- }
-fprintf (outfil, canned3);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilSymChTa.h");
-fclose (outfil);
-
-}
-
-\f
-/*
- * Routine to write out UilSymCtl.h
- *
- * This file defines the controls supported by each class. For each
- * object, there is a bit vector with the bit for each supporting class
- * turned on if the object is supported. There is then a vector pointing
- * to these bit vectors for all objects. This vector is accessed by
- * sym_k_..._object to find the objects bit vector, then by sym_k_..._object
- * to check the bit.
- */
-
-void wmlOutputUilSymCtl ()
-
-{
-
-char *canned1 =
-"\n/*\n\
- * Bit vectors for each control. The entries in the vector correspond\n\
- * to each class.\n\
- */\n";
-
-char *bvechdr =
-"\n\
-/* sym_k_%s_object */\n\
-static unsigned char object_class_vec%d[] =\n\
- {\n";
-
-char *canned2 =
-"\n/*\n\
- * Table of bit vectors accessed by sym_k_..._object\n\
- */\n\
-static unsigned char *allowed_control_table_vec[] =\n\
- {\n\
- NULL,\t/* UNUSED */\n";
-
-char *canned3 =
-" };\n\
-externaldef(uil_sym_glbl) unsigned char **allowed_control_table =\n\
-\t\tallowed_control_table_vec;\n";
-
-FILE *outfil; /* output file */
-int ctlndx; /* outer loop index */
-WmlClassDefPtr ctlobj; /* current class allowing controls */
-int clsndx; /* inner loop index */
-WmlClassDefPtr clsobj; /* current class object */
-int itemno; /* item in bye */
-char maskbuf[500]; /* current mask buffer */
-char itembuf[100]; /* for current item */
-int donl; /* TRUE if append \n to mask */
-
-
-/*
- * Open the output file. Write canned header.
- */
-outfil = fopen ( "UilSymCtl.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilSymCtl.h");
- return;
- }
-fprintf (outfil, canned_warn);
-fprintf (outfil, canned1);
-
-/*
- * Generate the bit vectors for each class. Outer loop on the class code,
- * inner loop on the class code.
- */
-for ( ctlndx=0 ; ctlndx<wml_obj_class_ptr->cnt ; ctlndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ctlndx].objptr;
- fprintf (outfil, bvechdr, clsobj->tkname, clsobj->sym_code);
-
- /*
- * inner loop on widget class.
- */
- strcpy (maskbuf, " ");
- for ( clsndx=0 ; clsndx<wml_obj_class_ptr->cnt ; clsndx++ )
- {
- ctlobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[clsndx].objptr;
- itemno = (ctlobj->sym_code+1) % 8;
- donl = FALSE;
- if ( wmlResolveCtlIsMember(clsobj,ctlobj->controls) == TRUE)
- {
- sprintf (itembuf, " _BIT_MASK(sym_k_%s_object) |",
- ctlobj->tkname);
- strcat (maskbuf, itembuf);
- donl = TRUE;
- }
- if ( donl )
- strcat (maskbuf, "\n ");
- if ( itemno == 0 )
- {
- fprintf (outfil, "%s 0", maskbuf);
- strcpy (maskbuf, ",");
- }
- }
- if ( itemno != 0 )
- fprintf (outfil, "%s 0};\n", maskbuf);
- else
- fprintf (outfil, "};\n");
- }
-
-/*
- * Write the vector of vectors.
- */
-fprintf (outfil, canned2);
-for ( ctlndx=0 ; ctlndx<wml_obj_class_ptr->cnt ; ctlndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ctlndx].objptr;
- fprintf (outfil, " object_class_vec%d,\n", clsobj->sym_code);
- }
-fprintf (outfil, canned3);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilSymCtl.h");
-fclose (outfil);
-
-}
-
-
-\f
-/*
- * Predicate to indicate if a class object is in a controls list.
- */
-
-int wmlResolveCtlIsMember (ctlobj, ctlref)
- WmlClassDefPtr ctlobj;
- WmlClassCtrlDefPtr ctlref;
-
-{
-
-while ( ctlref != NULL )
- {
- if ( ctlref->ctrl == ctlobj ) return TRUE;
- ctlref = ctlref->next;
- }
-return FALSE;
-
-}
-
-
-\f
-/*
- * Routine to write out UilSymNam.h
- *
- * Tables of names of object indexed by their various sym_k_ literals.
- */
-
-void wmlOutputUilSymNam ()
-
-{
-
-char *canned1 =
-"/* Define mapping of sym_k_..._object codes to widget names. */\n\
-\n\
-externaldef(uil_sym_glbl) int uil_max_object = %d;\n\
-static char *uil_widget_names_vec[] = {\n\
- \"\",\t/* NOT USED */\n";
-
-char *canned2 =
-"};\n\
-externaldef(uil_sym_glbl) char **uil_widget_names =\n\
-\t\tuil_widget_names_vec;\n\
-\n\n\
-/* Define mapping of sym_k_..._arg codes to argument names. */\n\
-\n\
-externaldef(uil_sym_glbl) int uil_max_arg = %d;\n\
-static char *uil_argument_names_vec[] = {\n\
- \"\",\t/* NOT USED */\n";
-
-char *canned3 =
-"};\n\
-externaldef(uil_sym_glbl) char **uil_argument_names =\n\
-\t\tuil_argument_names_vec;\n\
-\n\n\
-/* Define mapping of sym_k_..._reason to reason names. */\n\
-\n\
-externaldef(uil_sym_glbl) int uil_max_reason = %d;\n\
-static char *uil_reason_names_vec[] = {\n\
- \"\",\t/* NOT USED */\n";
-
-char *canned4 =
-"};\n\
-externaldef(uil_sym_glbl) char **uil_reason_names =\n\
-\t\tuil_reason_names_vec;\n\
-\n\n\
-/* Define mapping of sym_k_..._enumval to enumeration value names. */\n\
-\n\
-externaldef(uil_sym_glbl) int uil_max_enumset = %d;\n\
-externaldef(uil_sym_glbl) int uil_max_enumval = %d;\n\
-static char *uil_enumval_names_vec[] = {\n\
- \"\",\t/* NOT USED */\n";
-
-char *canned5 =
-"};\n\
-externaldef(uil_sym_glbl) char **uil_enumval_names =\n\
-\t\tuil_enumval_names_vec;\n\
-\n\n\
-/* Define mapping of sym_k_..._charset to enumeration value names. */\n\
-\n\
-externaldef(uil_sym_glbl) int uil_max_charset = %d;\n\
-static char *uil_charset_names_vec[] = {\n\
- \"\",\t/* NOT USED */\n\
- \"<userdefined>\",\n";
-
-char *canned6 =
-"};\n\
-externaldef(uil_sym_glbl) char **uil_charset_names =\n\
-\t\tuil_charset_names_vec;\n\
-\n\n\
-/* Define mapping of sym_k_..._child codes to child names. */\n\
-\n\
-externaldef(uil_sym_glbl) int uil_max_child = %d;\n\
-static char *uil_child_names_vec[] = {\n\
- \"\",\t/* NOT USED */\n";
-
-char *canned7 =
-"};\n\
-externaldef(uil_sym_glbl) char **uil_child_names =\n\
-\t\tuil_child_names_vec;\n";
-
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-WmlClassDefPtr clsobj; /* class object */
-WmlClassDefPtr varobj; /* gadget class object */
-WmlSynClassDefPtr synobj; /* syntactic object */
-WmlResourceDefPtr resobj; /* argument/reason object */
-WmlSynResourceDefPtr synres; /* arg/reason syntactic object */
-WmlEnumValueDefPtr evobj; /* enumeration value object */
-WmlSynEnumValueDefPtr synev; /* enumeration value syntactic obj */
-WmlCharSetDefPtr csobj; /* character set object */
-WmlSynCharSetDefPtr syncs; /* character set syntactic obj */
-WmlChildDefPtr chobj; /* child object */
-WmlSynChildDefPtr synch; /* child syntactic object */
-
-/*
- * Open the output file. Write canned header.
- */
-outfil = fopen ( "UilSymNam.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilSymNam.h");
- return;
- }
-fprintf (outfil, canned_warn);
-
-/*
- * Write entries for widgets
- */
-fprintf (outfil, canned1, max_object_code);
-for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- if ( clsobj->sym_code == 0 ) continue;
- synobj = clsobj->syndef;
- fprintf (outfil, " \"%s\",\n",
- synobj->name);
- }
-
-/*
- * Write entries for arguments
- */
-fprintf (outfil, canned2, max_arg_code);
-for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- synres = resobj->syndef;
- if ( resobj->sym_code == 0 ) continue;
- fprintf (outfil, " \"%s\",\n",
- synres->name);
- }
-
-/*
- * Write entries for reasons
- */
-fprintf (outfil, canned3, max_reason_code);
-for ( ndx=0 ; ndx<wml_obj_reason_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[ndx].objptr;
- synres = resobj->syndef;
- if ( resobj->sym_code == 0 ) continue;
- fprintf (outfil, " \"%s\",\n",
- synres->name);
- }
-
-/*
- * Write entries for enumeration values
- */
-fprintf (outfil, canned4, max_enumset_code, max_enumval_code);
-for ( ndx=0 ; ndx<wml_obj_enumval_ptr->cnt ; ndx++ )
- {
- evobj = (WmlEnumValueDefPtr) wml_obj_enumval_ptr->hvec[ndx].objptr;
- synev = evobj->syndef;
- if ( evobj->sym_code == 0 ) continue;
- fprintf (outfil, " \"%s\",\n",
- synev->name);
- }
-
-/*
- * Write entries for character sets
- */
-fprintf (outfil, canned5, max_charset_code);
-for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- {
- csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
- syncs = csobj->syndef;
- if ( csobj->sym_code == 0 ) continue;
- fprintf (outfil, " \"%s\",\n",
- syncs->name);
- }
-
-/*
- * Write entries for children
- */
-fprintf (outfil, canned6, max_child_code);
-for ( ndx=0 ; ndx<wml_obj_child_ptr->cnt ; ndx++ )
- {
- chobj = (WmlChildDefPtr) wml_obj_child_ptr->hvec[ndx].objptr;
- synch = chobj->syndef;
- if ( chobj->sym_code == 0 ) continue;
- fprintf (outfil, " \"%s\",\n",
- synch->name);
- }
-fprintf (outfil, canned7);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilSymNam.h");
-fclose (outfil);
-
-}
-
-
-\f
-/*
- * Routine to write out UilSymEnum.h
- *
- * This file defines the enumeration sets recognized by UIL. There is an
- * entry in this file for each enumeration set. The definitions are accessed
- * by the sym_k_..._enumset code. Each consists of a structure containing
- * a vector of enumeration value descriptors, each of which is the name
- * of the value and its value.
- *
- * UilSymEnum.h contains:
- * - Vectors of value descriptors for each table entry
- * - The table itself.
- * - A table given the sym_k_..._enumset code for each argument which
- * has an enumeration set.
- * - A table accessed by sym_k_..._enumval code giving the actual value
- * for each enumeration value.
- *
- * The typedefs for the tables are in UilSymGen.h
- */
-
-void wmlOutputUilSymEnum ()
-
-{
-
-char *canned1 =
-"\n\
-/*\n\
- * Enumeration value vectors for each enumeration set\n\
- */\n\
-\n";
-
-char *valhdr =
-"\n\
-static unsigned short int enum_value_vec%d[] =\n\
- {\n";
-
-char *canned3 =
-"\n\
-/*\n\
- * Enumeration set descriptor table\n\
- */\n\
-static UilEnumSetDescDef enum_set_table_vec[] =\n\
- {\n\
- {0,NULL},\n";
-
-char *canned4 =
-" };\n\
-externaldef(uil_sym_glbl) UilEnumSetDescDef *enum_set_table =\n\
-\t\tenum_set_table_vec;\n\
-/*\n\
- * Enumeration set table, accessed by sym_k_..._arg code. Each non-zero entry\n\
- * is the sym_k_..._enumset code for the argument's enumeration set.\n\
- */\n\
-static unsigned short int argument_enumset_table_vec[] =\n\
- {\n\
- 0,\n";
-
-char *canned5 =
-" };\n\
-externaldef(uil_sym_glbl) unsigned short int *argument_enumset_table =\n\
-\t\targument_enumset_table_vec;\n\
-/*\n\
- * Enumeration value table, accessed by sym_k_..._enumval code. Each entry is\n\
- * the actual value associated with the code.\n\
- */\n\
-static int enumval_values_table_vec[] =\n\
- {\n\
- 0,\n";
-
-char *canned5a =
-" };\n\
-externaldef(uil_sym_glbl) int *enumval_values_table =\n\
-\t\tenumval_values_table_vec;\n";
-
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-WmlEnumSetDefPtr enumsetobj; /* enumeration set object */
-WmlEnumSetValDefPtr esvobj; /* current enum set value list element */
-WmlEnumValueDefPtr evobj; /* current enumeration value object */
-WmlResourceDefPtr resobj; /* resource object */
-
-
-/*
- * Open the output file. Write the canned header stuff
- */
-outfil = fopen ("UilSymEnum.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilSymEnum.h");
- return;
- }
-fprintf (outfil, canned_warn);
-
-/*
- * Generate the enumeration value vectors for each enumeration set.
- */
-fprintf (outfil, canned1);
-for ( ndx=0 ; ndx<wml_obj_enumset_ptr->cnt ; ndx++ )
- {
- enumsetobj = (WmlEnumSetDefPtr) wml_obj_enumset_ptr->hvec[ndx].objptr;
- fprintf (outfil, valhdr, enumsetobj->sym_code);
- for ( esvobj=enumsetobj->values ; esvobj!=NULL ; esvobj=esvobj->next )
- {
- evobj = esvobj->value;
- fprintf (outfil, " %d,\n",
- evobj->sym_code);
- }
- fprintf (outfil, " };\n");
- }
-
-/*
- * Generate the enumeration set tables
- */
-fprintf (outfil, canned3);
-for ( ndx=0 ; ndx<wml_obj_enumset_ptr->cnt ; ndx++ )
- {
- enumsetobj = (WmlEnumSetDefPtr) wml_obj_enumset_ptr->hvec[ndx].objptr;
- fprintf (outfil, " {%d,enum_value_vec%d},\n",
- enumsetobj->values_cnt,
- enumsetobj->sym_code);
- }
-
-/*
- * Create enumset table entries for arguments, similar to writing sym_k...
- */
-fprintf (outfil, canned4);
-for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- if ( resobj->enumset_def == NULL )
- fprintf (outfil, " 0,\n");
- else
- fprintf (outfil, " %d,\n",
- resobj->enumset_def->sym_code);
- }
-
-/*
- * Create the enumval values table.
- */
-fprintf (outfil, canned5);
-for ( ndx=0 ; ndx<wml_obj_enumval_ptr->cnt ; ndx++ )
- {
- evobj = (WmlEnumValueDefPtr) wml_obj_enumval_ptr->hvec[ndx].objptr;
- fprintf (outfil, " %s,\n", evobj->syndef->enumlit);
- }
-fprintf (outfil, canned5a);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilSymEnum.h");
-fclose (outfil);
-
-}
-
-
-\f
-/*
- * Routine to write out UilSymCSet.h
- *
- * This file specifies the various attributes for the character sets
- * recognized by UIL. There is a table for each of the following
- * attributes:
- * - Standards name associated with the character set
- * - Writing direction, from XmSTRING_DIRECTION_...
- * - Parsing direction, from XmSTRING_DIRECTION_...
- * - Bytes per character, from sym_k_..._charsize (in UilSymGen.h)
- * - A pair of tables for recognizing $LANG settings:
- * o a table of all names under which a character set might
- * be legally recognized (upper case).
- * o the sym_k_..._charset code for each entry
- * o a variable giving the number of entries in the table
- *
- * All tables are accessed by the sym_k_..._charset
- *
- */
-
-void wmlOutputUilSymCSet ()
-
-{
-
-char *canned1 =
-"\n\
-/*\n\
- * Character set XmString name table, accessed by sym_k_..._charset code.\n\
- * Each entry is the name which identifies the character set in a XmString.\n\
- */\n\
-static char *charset_xmstring_names_table_vec[] =\n\
- {\n\
- 0,\n\
- \"<userdefined>\",\n";
-
-char *canned2 =
-"};\n\
-externaldef(uil_sym_glbl) char **charset_xmstring_names_table =\n\
-\t\tcharset_xmstring_names_table_vec;\n\
-/*\n\
- * Character set writing direction table, accessed by sym_k_..._charset code.\n\
- * Each entry is the XmSTRING_DIRECTION_... code which identifies the\n\
- * writing direction for the character set in a XmString.\n\
- */\n\
-static unsigned char charset_wrdirection_table_vec[] =\n\
- {\n\
- 0,\n\
- 0,\t/* userdefined */\n";
-
-char *canned3 =
-"};\n\
-externaldef(uil_sym_glbl) unsigned char *charset_writing_direction_table =\n\
-\t\tcharset_wrdirection_table_vec;\n\
-/*\n\
- * Character set parsing direction table, accessed by sym_k_..._charset code.\n\
- * Each entry is the XmSTRING_DIRECTION_... code which identifies the\n\
- * parsing direction for the character set in a XmString.\n\
- */\n\
-static unsigned char charset_parsdirection_table_vec[] =\n\
- {\n\
- 0,\n\
- 0,\t/* userdefined */\n";
-
-char *canned4 =
-"};\n\
-externaldef(uil_sym_glbl) unsigned char *charset_parsing_direction_table =\n\
-\t\tcharset_parsdirection_table_vec;\n\
-/*\n\
- * Character set character size table, accessed by sym_k_..._charset code.\n\
- * Each entry is the sym_k_..._charsize literal which names the character\n\
- * size for the character set in a XmString.\n\
- */\n\
-static unsigned char charset_charsize_table_vec[] =\n\
- {\n\
- 0,\n\
- 0,\t/* userdefined */\n";
-
-char *canned5 =
-"};\n\
-externaldef(uil_sym_glbl) unsigned char *charset_character_size_table =\n\
-\t\tcharset_charsize_table_vec;\n\
-/*\n\
- * All the names under which a character set may be legally named in a \n\
- * $LANG variable (upper case).\n\
- */\n\
-static char *charset_lang_names_table_vec[] =\n\
- {\n";
-
-char *canned6 =
-"};\n\
-externaldef(uil_sym_glbl) char **charset_lang_names_table =\n\
-\t\tcharset_lang_names_table_vec;\n\
-/*\n\
- * The sym_k_..._charset codes for charset_lang_names\n\
- */\n\
-static unsigned short int charset_lang_codes_table_vec[] =\n\
- {\n";
-
-char *canned7 =
-"};\n\
-externaldef(uil_sym_glbl) unsigned short int *charset_lang_codes_table =\n\
-\t\tcharset_lang_codes_table_vec;\n\
-/*\n\
- * The number of entries in charset_lang_..._table tables\n\
- */\n\
-externaldef(uil_sym_glbl) unsigned short int charset_lang_table_max = %d;\n";
-
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-WmlCharSetDefPtr csobj; /* character set object */
-WmlSynCharSetDefPtr syncs; /* character set syntactic obj */
-int lang_max; /* max value for $LANG tables */
-int alias_ndx; /* alias loop index */
-char uname[200]; /* name converted to upper case */
-
-
-/*
- * Open the output file. Write the canned header stuff
- */
-outfil = fopen ("UilSymCSet.h", "w");
-if ( outfil == (FILE *) NULL )
- {
- printf ("\nCouldn't open UilSymCSet.h");
- return;
- }
-fprintf (outfil, canned_warn);
-
-/*
- * Generate the standards name table
- */
-fprintf (outfil, canned1);
-for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- {
- csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
- syncs = csobj->syndef;
- if ( csobj->sym_code == 0 ) continue;
- if ((strcmp(syncs->xms_name, "XmFONTLIST_DEFAULT_TAG") == 0) ||
- (strcmp(syncs->xms_name, "_MOTIF_DEFAULT_LOCALE") == 0))
- fprintf (outfil, " %s,\t/* %s */\n",
- syncs->xms_name, syncs->name);
- else
- fprintf (outfil, " \"%s\",\t/* %s */\n",
- syncs->xms_name, syncs->name);
- }
-
-/*
- * Generate the writing direction table
- */
-fprintf (outfil, canned2);
-for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- {
- csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
- syncs = csobj->syndef;
- if ( csobj->sym_code == 0 ) continue;
- switch ( syncs->direction )
- {
- case WmlCharSetDirectionLtoR:
- fprintf (outfil, " XmSTRING_DIRECTION_L_TO_R,\t/* %s */\n",
- syncs->name);
- break;
- case WmlCharSetDirectionRtoL:
- fprintf (outfil, " XmSTRING_DIRECTION_R_TO_L,\t/* %s */\n",
- syncs->name);
- break;
- }
- }
-
-/*
- * Generate the parsing direction table
- */
-fprintf (outfil, canned3);
-for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- {
- csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
- syncs = csobj->syndef;
- if ( csobj->sym_code == 0 ) continue;
- switch ( syncs->parsedirection )
- {
- case WmlCharSetDirectionLtoR:
- fprintf (outfil, " XmSTRING_DIRECTION_L_TO_R,\t/* %s */\n",
- syncs->name);
- break;
- case WmlCharSetDirectionRtoL:
- fprintf (outfil, " XmSTRING_DIRECTION_R_TO_L,\t/* %s */\n",
- syncs->name);
- break;
- }
- }
-
-/*
- * Generate the character size table
- */
-fprintf (outfil, canned4);
-for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- {
- csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
- syncs = csobj->syndef;
- if ( csobj->sym_code == 0 ) continue;
- switch ( syncs->charsize )
- {
- case WmlCharSizeOneByte:
- fprintf (outfil, " sym_k_onebyte_charsize,\t/* %s */\n",
- syncs->name);
- break;
- case WmlCharSizeTwoByte:
- fprintf (outfil, " sym_k_twobyte_charsize,\t/* %s */\n",
- syncs->name);
- break;
- case WmlCharSizeMixed1_2Byte:
- fprintf (outfil, " sym_k_mixed1_2byte_charsize,\t/* %s */\n",
- syncs->name);
- break;
- }
- }
-
-/*
- * Generate the $LANG name recognition table
- */
-fprintf (outfil, canned5);
-lang_max = 0;
-for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- {
- csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
- syncs = csobj->syndef;
- if ( csobj->sym_code == 0 ) continue;
- strcpy (uname, syncs->name);
- wmlUpperCaseString (uname);
- fprintf (outfil, " \"%s\",\t/* %s */\n",
- uname, syncs->name);
- lang_max += 1;
- strcpy (uname, syncs->xms_name);
- wmlUpperCaseString (uname);
- fprintf (outfil, " \"%s\",\t/* %s */\n",
- uname, syncs->name);
- lang_max += 1;
- for ( alias_ndx=0 ; alias_ndx<syncs->alias_cnt ; alias_ndx++ )
- {
- strcpy (uname, syncs->alias_list[alias_ndx]);
- wmlUpperCaseString (uname);
- fprintf (outfil, " \"%s\",\t/* %s */\n",
- uname, syncs->name);
- lang_max += 1;
- }
- }
-
-/*
- * Generate the $LANG code lookup table, in upper case
- */
-fprintf (outfil, canned6);
-for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- {
- csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
- syncs = csobj->syndef;
- if ( csobj->sym_code == 0 ) continue;
- fprintf (outfil, " sym_k_%s_charset,\n", syncs->name);
- fprintf (outfil, " sym_k_%s_charset,\n", syncs->name);
- for ( alias_ndx=0 ; alias_ndx<syncs->alias_cnt ; alias_ndx++ )
- fprintf (outfil, " sym_k_%s_charset,\n", syncs->name);
- }
-
-/*
- * Generate the number of entries in the previous two tables
- */
-fprintf (outfil, canned7, lang_max);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilSymCSet.h");
-fclose (outfil);
-
-}
-
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: wmloutkey.c /main/8 1997/04/14 12:55:51 dbl $"
-#endif
-#endif
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
- * This module contains routines responsible for writing the .h files which
- * define the UIL lexer's keyword (token) tables. All files are written
- * into the current directory.
- *
- * Input:
- * The resolved objects
- * .dat files required to specify objects defined in Uil.y:
- * keyword.dat
- * reserved.dat
- *
- * Output:
- * UilKeyTab.h
- *
- */
-
-
-#include "wml.h"
-
-#if defined(__STDC__)
-#include <stdlib.h>
-#include <string.h>
-#endif
-#include <stdio.h>
-
-
-/*
- * Routines used only in this module
- */
-void wmlKeyWBuildTables ();
-void wmlKeyWClassTokens ();
-void wmlKeyWGrammarTokens ();
-int wmlKeyWGrammarClass ();
-void wmlKeyWArgTokens ();
-void wmlKeyWReasonTokens ();
-void wmlKeyWCharsetTokens ();
-void wmlKeyWEnumvalTokens ();
-void wmlKeyWChildTokens ();
-void wmlKeyWMakeTokens ();
-void wmlOutputUilKeyTab ();
-void wmlOutputUilKeyTabBody ();
-void wmlTokenClassString ();
-void wmlTokenSymKString ();
-void wmlTokenTokenString ();
-void wmlOutputUilTokName ();
-
-/*
- * globals
- */
-
-static char *canned_warn =
-"/*\n\
-**\tThis file is automatically generated. Do not edit it by hand.\n\
-**/\n\n";
-
-#define GrTokenMax 200 /* limit on grammar tokens */
-static int grtok_max_val = 0;
-static WmlGrammarTokenPtr grtok_vec[GrTokenMax];
-
-
-\f
-/*
- * Output control routine
- */
-
-void wmlOutputKeyWordFiles ()
-
-{
-
-wmlKeyWBuildTables ();
-wmlOutputUilKeyTab ();
-wmlOutputUilTokName ();
-
-}
-
-
-\f
-/*
- * Routine to construct token tables for building UilKeyTab.h
- *
- * This routine constructs token entries for each token class which appears
- * in UilKeyTab.h (the token classes are defined in UilKeyDef.h). These
- * tokens are defined both by WML objects in object vectors, and by
- * tokens defined in Uil.y.
- */
-
-void wmlKeyWBuildTables ()
-
-{
-
-int ndx;
-
-
-/*
- * Initialize the token vectors
- */
-wmlInitHList (wml_tok_sens_ptr, 1000, TRUE);
-wmlInitHList (wml_tok_insens_ptr, 1000, TRUE);
-for ( ndx=0 ; ndx<GrTokenMax ; ndx++ )
- grtok_vec[ndx] = NULL;
-
-/*
- * Read and enter the tokens from Uil.y (via tokens.dat)
- */
-wmlKeyWGrammarTokens ();
-
-/*
- * Enter the class, argument, reason, charset, child, and enumval tokens
- */
-wmlKeyWClassTokens ();
-wmlKeyWArgTokens ();
-wmlKeyWReasonTokens ();
-wmlKeyWCharsetTokens ();
-wmlKeyWEnumvalTokens ();
-wmlKeyWChildTokens ();
-
-}
-
-
-\f
-/*
- * Routine to read and enter tokens defined in Uil.y into the token tables.
- */
-
-void wmlKeyWGrammarTokens ()
-
-{
-
-FILE *infil; /* input file (tokens.dat) */
-int scanres; /* result of fscanf */
-int lineno = 1; /* current line number */
-char token[100]; /* current token */
-char class[100]; /* current class */
-int tokval; /* current token id (as value) */
-WmlGrammarTokenPtr grtok; /* new grammar token */
-int ndx;
-char sens_name[100]; /* for case-insensitive name */
-
-
-/*
- * Read tokens.dat. Recognize and save all tokens. Some are saved in the
- * global tokens vector so they will be put into UilKeyTab.h. All are
- * saved in an ordered vector to write UilTokName.h
- *
- * Special handling is required for tokens whose yacc definition conflicts
- * with common literals. In these cases, the token literal does not map
- * directly to its keyword in the language, and must be mapped as a special
- * case:
- * UILTRUE -> true/TRUE
- * UILFALSE -> false/FALSE
- * UILfile -> file/FILE
- * UILeof -> eof/EOF
- */
-infil = fopen ("tokens.dat", "r");
-if ( infil == NULL )
- {
- printf ("\nCouldn't open tokens.dat");
- return;
- }
-
-while ( TRUE )
- {
- scanres = fscanf (infil, "%s %d %s", token, &tokval, class);
- if ( scanres == EOF ) break;
- if ( scanres != 3 )
- {
- printf ("\nBadly formatted at line %d in tokens.dat", lineno);
- continue;
- }
- lineno += 1;
-
-/*
- * Convert the token class, and construct a grammar token.
- */
- grtok = (WmlGrammarTokenPtr) malloc(sizeof(WmlGrammarToken));
- grtok->class = wmlKeyWGrammarClass (class);
- grtok->token = wmlAllocateString (token);
- grtok->val = tokval;
-
-/*
- * Save the token in the grammar token vector, indexed by its value
- * (for UilTokName.h)
- */
-if ( grtok->val < GrTokenMax )
- {
- grtok_vec[grtok->val] = grtok;
- if ( grtok->val > grtok_max_val )
- grtok_max_val = grtok->val;
- }
-else
- printf ("\nToken id %d for %s exceed GrTokenMax",
- grtok->val, grtok->token);
-
-/*
- * Enter tokens which appear in the keyword tables as keyword tokens.
- * These have their lower case names entered as the case-insensitive
- * keyword token string. Do special token literal mapping.
- */
- switch ( grtok->class )
- {
- case WmlTokenClassKeyword:
- case WmlTokenClassReserved:
- strcpy (sens_name, grtok->token);
- for ( ndx=0 ; ndx<(int)strlen(sens_name) ; ndx++ )
- sens_name[ndx] = _lower(sens_name[ndx]);
- if ( strcmp(sens_name,"uiltrue") == 0 )
- strcpy (sens_name, "true");
- if ( strcmp(sens_name,"uilfalse") == 0 )
- strcpy (sens_name, "false");
- if ( strcmp(sens_name,"uilfile") == 0 )
- strcpy (sens_name, "file");
- if ( strcmp(sens_name,"uileof") == 0 )
- strcpy (sens_name, "eof");
- wmlKeyWMakeTokens (sens_name, grtok->class, (ObjectPtr)grtok);
- }
- }
-
-fclose (infil);
-
-}
-
-
-\f
-/*
- * This routine translates a string identifying a token class into
- * its matching internal literal.
- */
-int wmlKeyWGrammarClass (token)
- char *token;
-
-{
-
-if ( strcmp(token,"argument") == 0 )
- return WmlTokenClassArgument;
-if ( strcmp(token,"charset") == 0 )
- return WmlTokenClassCharset;
-if ( strcmp(token,"color") == 0 )
- return WmlTokenClassColor;
-if ( strcmp(token,"enumval") == 0 )
- return WmlTokenClassEnumval;
-if ( strcmp(token,"font") == 0 )
- return WmlTokenClassFont;
-if ( strcmp(token,"identifier") == 0 )
- return WmlTokenClassIdentifier;
-if ( strcmp(token,"keyword") == 0 )
- return WmlTokenClassKeyword;
-if ( strcmp(token,"literal") == 0 )
- return WmlTokenClassLiteral;
-if ( strcmp(token,"reason") == 0 )
- return WmlTokenClassReason;
-if ( strcmp(token,"reserved") == 0 )
- return WmlTokenClassReserved;
-if ( strcmp(token,"special") == 0 )
- return WmlTokenClassSpecial;
-if ( strcmp(token,"unused") == 0 )
- return WmlTokenClassUnused;
-if ( strcmp(token,"class") == 0 )
- return WmlTokenClassClass;
-if (strcmp(token,"child") == 0) return WmlTokenClassChild;
-
-printf ("\nUnrecognized token class %s", token);
-return 0;
-
-}
-
-
-\f
-/*
- * Routine to process the class objects and enter them in the token tables.
- * Aliases are also entered, under their own names.
- */
-
-void wmlKeyWClassTokens ()
-
-{
-
-int ndx; /* loop index */
-WmlClassDefPtr clsobj; /* class object */
-WmlSynClassDefPtr synobj; /* syntactic object */
-
-
-/*
- * Make tokens for all class entries
- */
-for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- synobj = clsobj->syndef;
- wmlKeyWMakeTokens (synobj->name, WmlTokenClassClass, (ObjectPtr)clsobj);
- }
-
-}
-
-
-\f
-/*
- * Routine to process the argument objects and enter them in the token tables.
- * Aliases are also entered, under their own names.
- */
-
-void wmlKeyWArgTokens ()
-
-{
-
-int ndx; /* loop index */
-WmlResourceDefPtr resobj; /* resource object */
-WmlSynResourceDefPtr synobj; /* syntactic object */
-int alias_ndx; /* alias loop index */
-
-
-/*
- * Make tokens for all argument entries
- */
-for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- synobj = resobj->syndef;
- wmlKeyWMakeTokens (synobj->name, WmlTokenClassArgument, (ObjectPtr)resobj);
- for ( alias_ndx=0 ; alias_ndx<synobj->alias_cnt ; alias_ndx++ )
- wmlKeyWMakeTokens (synobj->alias_list[alias_ndx],
- WmlTokenClassArgument,
- (ObjectPtr)resobj);
- }
-
-}
-
-
-\f
-/*
- * Routine to process the reason objects and enter them in the token tables.
- */
-
-void wmlKeyWReasonTokens ()
-
-{
-
-int ndx; /* loop index */
-WmlResourceDefPtr resobj; /* resource object */
-WmlSynResourceDefPtr synobj; /* syntactic object */
-int alias_ndx; /* alias loop index */
-
-
-/*
- * Make tokens for all reason entries
- */
-for ( ndx=0 ; ndx<wml_obj_reason_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[ndx].objptr;
- synobj = resobj->syndef;
- wmlKeyWMakeTokens (synobj->name, WmlTokenClassReason, (ObjectPtr)resobj);
- for ( alias_ndx=0 ; alias_ndx<synobj->alias_cnt ; alias_ndx++ )
- wmlKeyWMakeTokens (synobj->alias_list[alias_ndx],
- WmlTokenClassReason,
- (ObjectPtr)resobj);
- }
-
-}
-
-\f
-/*
- * Routine to process the child objects and enter them in the token tables.
- */
-
-void wmlKeyWChildTokens ()
-
-{
-
-int ndx; /* loop index */
-WmlChildDefPtr childobj; /* child object */
-WmlSynChildDefPtr synobj; /* syntactic object */
-
-/*
- * Make tokens for all child entries
- */
-for ( ndx=0 ; ndx<wml_obj_child_ptr->cnt ; ndx++ )
- {
- childobj = (WmlChildDefPtr) wml_obj_child_ptr->hvec[ndx].objptr;
- synobj = childobj->syndef;
- wmlKeyWMakeTokens (synobj->name, WmlTokenClassChild, (ObjectPtr)childobj);
- }
-
-}
-
-
-\f
-/*
- * Routine to process the charset objects and enter them in the token tables.
- */
-
-void wmlKeyWCharsetTokens ()
-
-{
-
-int ndx; /* loop index */
-WmlCharSetDefPtr csobj; /* character set object */
-WmlSynCharSetDefPtr synobj; /* syntactic object */
-int alias_ndx; /* alias loop index */
-
-
-/*
- * Make tokens for all charset entries
- */
-for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- {
- csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
- synobj = csobj->syndef;
- wmlKeyWMakeTokens (synobj->name, WmlTokenClassCharset, (ObjectPtr)csobj);
- for ( alias_ndx=0 ; alias_ndx<synobj->alias_cnt ; alias_ndx++ )
- wmlKeyWMakeTokens (synobj->alias_list[alias_ndx],
- WmlTokenClassCharset,
- (ObjectPtr)csobj);
- }
-
-}
-
-
-\f
-/*
- * Routine to process the enumval objects and enter them in the token tables.
- */
-
-void wmlKeyWEnumvalTokens ()
-
-{
-
-int ndx; /* loop index */
-WmlEnumValueDefPtr esobj; /* enumeration value object */
-WmlSynEnumValueDefPtr synobj; /* syntactic object */
-
-
-/*
- * Make tokens for all enumval entries
- */
-for ( ndx=0 ; ndx<wml_obj_enumval_ptr->cnt ; ndx++ )
- {
- esobj = (WmlEnumValueDefPtr) wml_obj_enumval_ptr->hvec[ndx].objptr;
- synobj = esobj->syndef;
- wmlKeyWMakeTokens (synobj->name, WmlTokenClassEnumval, (ObjectPtr)esobj);
- }
-
-}
-
-
-\f
-/*
- * Routine to create tokens and enter them in the token list.
- *
- * This routine constructs a case-sensitive and a case-insensitive token
- * and enters them the token vectors.
- */
-void wmlKeyWMakeTokens (sens_name, class, obj)
- char *sens_name;
- int class;
- ObjectPtr obj;
-
-{
-
-WmlKeyWTokenPtr senstok; /* case-sensitive token */
-WmlKeyWTokenPtr insenstok; /* case-insensitive token */
-char insens_name[100];
-int ndx;
-
-
-/*
- * Create both tokens, with one having an upper-case name. The names are
- * entered only in the order vector, not in the token itself.
- */
-senstok = (WmlKeyWTokenPtr) malloc (sizeof(WmlKeyWToken));
-insenstok = (WmlKeyWTokenPtr) malloc (sizeof(WmlKeyWToken));
-senstok->class = class;
-senstok->objdef = obj;
-insenstok->class = class;
-insenstok->objdef = obj;
-
-strcpy (insens_name, sens_name);
-for ( ndx=0 ; ndx<(int)strlen(insens_name) ; ndx++ )
- insens_name[ndx] = _upper (insens_name[ndx]);
-
-wmlInsertInKeyList(wml_tok_sens_ptr, sens_name, senstok);
-wmlInsertInKeyList(wml_tok_insens_ptr, insens_name, insenstok);
-}
-
-\f
-/*
- * Routine to output UilKeyTab.h
- *
- * This routine dumps the tokens defined in the token tables into
- * UilKeyTab.h. Both the case-sensitive and case-insensitive token
- * lists are used.
- */
-
-void wmlOutputUilKeyTab ()
-
-{
-
-char *canned1 =
-"\n/* case sensitive keyword table */\n\
-static key_keytable_entry_type key_table_vec[] =\n\
- {\n";
-
-char *canned2 =
-" };\n\
-externaldef(uil_sym_glbl) key_keytable_entry_type *key_table =\n\
-\t\tkey_table_vec;\n\n\
-/* Maximum length of a keyword, and table size */\n\
-externaldef(uil_sym_glbl) int key_k_keyword_max_length = %d;\n\
-externaldef(uil_sym_glbl) int key_k_keyword_count = %d;\n\n\
-/* case insensitive keyword table */\n\
-static key_keytable_entry_type key_table_case_ins_vec[] =\n\
- {\n";
-
-char *canned3 =
-" };\n\
-externaldef(uil_sym_glbl) key_keytable_entry_type *key_table_case_ins =\n\
-\t\tkey_table_case_ins_vec;\n";
-
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-int maxlen = 0; /* max keyword length */
-int maxkey = 0; /* # entries in keyword table */
-
-
-/*
- * Open the output file.
- */
-outfil = fopen ("UilKeyTab.h", "w");
-if ( outfil == NULL )
- {
- printf ("\nCouldn't open UilKeyTab.h");
- return;
- }
-fprintf (outfil, canned_warn);
-
-/*
- * Print the case sensitive and insensitive tables
- */
-fprintf (outfil, canned1);
-wmlOutputUilKeyTabBody (outfil, wml_tok_sens_ptr, &maxlen, &maxkey);
-fprintf (outfil, canned2, maxlen, maxkey);
-wmlOutputUilKeyTabBody (outfil, wml_tok_insens_ptr, &maxlen, &maxkey);
-fprintf (outfil, canned3);
-
-/*
- * close the output file
- */
-printf ("\nCreated UilKeyTab.h");
-fclose (outfil);
-
-}
-
-
-\f
-/*
- * Routine to output the body of a keyword table
- */
-void wmlOutputUilKeyTabBody (outfil, tokvec, maxlen, maxkey)
- FILE *outfil;
- DynamicHandleListDefPtr tokvec;
- int *maxlen;
- int *maxkey;
-
-{
-
-int ndx; /* loop index */
-WmlKeyWTokenPtr tok; /* current token */
-char *tokstg; /* string for token (keyword) */
-char tkclass[100]; /* token class string */
-char tksym[100]; /* token sym_k string */
-char tktoken[100]; /* token tkn_k_num string */
-
-
-/*
- * Loop over all tokens, and put out an entry for each.
- */
-for ( ndx=0 ; ndx<tokvec->cnt ; ndx++ )
- {
- tok = (WmlKeyWTokenPtr) tokvec->hvec[ndx].objptr;
- tokstg = tokvec->hvec[ndx].objname;
- wmlTokenClassString (tkclass, tok);
- wmlTokenSymKString (tksym, tok);
- wmlTokenTokenString (tktoken, tok);
- fprintf (outfil, " {%s, %s, %d, %s, \"%s\"},\n",
- tkclass,
- tksym,
- strlen(tokstg),
- tktoken,
- tokstg);
- if ( (int)strlen(tokstg) > *maxlen )
- *maxlen = strlen (tokstg);
- *maxkey += 1;
- }
-
-}
-
-
-\f
-/*
- * Routine to return the string for a token class, tkn_k_class_...
- */
-void wmlTokenClassString (dststg, tok)
- char *dststg;
- WmlKeyWTokenPtr tok;
-
-{
-
-switch ( tok->class )
- {
- case WmlTokenClassArgument:
- strcpy (dststg, "tkn_k_class_argument");
- return;
- case WmlTokenClassCharset:
- strcpy (dststg, "tkn_k_class_charset");
- return;
- case WmlTokenClassEnumval:
- strcpy (dststg, "tkn_k_class_enumval");
- return;
- case WmlTokenClassKeyword:
- strcpy (dststg, "tkn_k_class_keyword");
- return;
- case WmlTokenClassReason:
- strcpy (dststg, "tkn_k_class_reason");
- return;
- case WmlTokenClassReserved:
- strcpy (dststg, "tkn_k_class_reserved");
- return;
- case WmlTokenClassClass:
- strcpy (dststg, "tkn_k_class_class");
- return;
- case WmlTokenClassChild:
- strcpy (dststg, "tkn_k_class_child");
- return;
- }
-
-}
-
-
-\f
-/*
- * Routine to return the string for a sym_k_... for some object
- */
-void wmlTokenSymKString (dststg, tok)
- char *dststg;
- WmlKeyWTokenPtr tok;
-
-{
-
-WmlClassDefPtr clsobj; /* class object */
-WmlResourceDefPtr resobj; /* resource object */
-WmlCharSetDefPtr csobj; /* character set object */
-WmlEnumValueDefPtr esobj; /* enumeration value object */
-WmlChildDefPtr chobj; /* child object */
-
-
-switch ( tok->class )
- {
- case WmlTokenClassArgument:
- resobj = (WmlResourceDefPtr) tok->objdef;
- sprintf (dststg, "sym_k_%s_arg", resobj->tkname);
- return;
- case WmlTokenClassCharset:
- csobj = (WmlCharSetDefPtr) tok->objdef;
- sprintf (dststg, "sym_k_%s_charset", csobj->syndef->name);
- return;
- case WmlTokenClassEnumval:
- esobj = (WmlEnumValueDefPtr) tok->objdef;
- sprintf (dststg, "sym_k_%s_enumval", esobj->syndef->name);
- return;
- case WmlTokenClassKeyword:
- strcpy (dststg, "0");
- return;
- case WmlTokenClassReason:
- resobj = (WmlResourceDefPtr) tok->objdef;
- sprintf (dststg, "sym_k_%s_reason", resobj->tkname);
- return;
- case WmlTokenClassReserved:
- strcpy (dststg, "0");
- return;
- case WmlTokenClassClass:
- clsobj = (WmlClassDefPtr) tok->objdef;
- sprintf (dststg, "sym_k_%s_object", clsobj->tkname);
- return;
- case WmlTokenClassChild:
- chobj = (WmlChildDefPtr) tok->objdef;
- sprintf (dststg, "sym_k_%s_child", chobj->tkname);
- return;
- }
-
-}
-
-
-\f
-/*
- * Routine to return the string for a token number, tkn_k_num_...
- */
-void wmlTokenTokenString (dststg, tok)
- char *dststg;
- WmlKeyWTokenPtr tok;
-
-{
-
-WmlGrammarTokenPtr grtok; /* grammar token */
-
-
-switch ( tok->class )
- {
- case WmlTokenClassArgument:
- strcpy (dststg, "ARGUMENT_NAME");
- return;
- case WmlTokenClassCharset:
- strcpy (dststg, "CHARSET_NAME");
- return;
- case WmlTokenClassEnumval:
- strcpy (dststg, "ENUMVAL_NAME");
- return;
- case WmlTokenClassReason:
- strcpy (dststg, "REASON_NAME");
- return;
- case WmlTokenClassKeyword:
- case WmlTokenClassReserved:
- grtok = (WmlGrammarTokenPtr) tok->objdef;
- strcpy (dststg, grtok->token);
- return;
- case WmlTokenClassClass:
- strcpy (dststg, "CLASS_NAME");
- return;
- case WmlTokenClassChild:
- strcpy (dststg, "CHILD_NAME");
- return;
- }
-
-}
-
-
-\f
-/*
- * routine to output UilTokName.h
- */
-
-void wmlOutputUilTokName ()
-
-{
-
-char *canned1 =
-"/*\tToken name table */\n\
-static char *tok_token_name_table_vec[] = \n\
- {\n";
-
-char *canned2 =
-" };\n\
-externaldef(uil_sym_glbl) char **tok_token_name_table =\n\
-\t\ttok_token_name_table_vec;\n\n\
-/*\tNumber of entries in table */\n\
-externaldef(uil_sym_glbl) int tok_num_tokens = %d;\n";
-
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-WmlGrammarTokenPtr grtok; /* current grammar token */
-
-
-/*
- * Open the output file.
- */
-outfil = fopen ("UilTokName.h", "w");
-if ( outfil == NULL )
- {
- printf ("\nCouldn't open UilTokName.h");
- return;
- }
-fprintf (outfil, canned_warn);
-fprintf (outfil, canned1);
-
-/*
- * Print the token name entries
- * Note: vector size is max_val + 1 for zeroth token
- */
-for ( ndx=0 ; ndx<grtok_max_val+1 ; ndx++ )
- {
- grtok = grtok_vec[ndx];
- if ( grtok != NULL )
- fprintf (outfil, " \"%s\",\n", grtok->token);
- else
- fprintf (outfil, " \"UNKNOWN_TOKEN\",\n");
- }
-
-/*
- * close the output file
- */
-fprintf (outfil, canned2, grtok_max_val+1);
-printf ("\nCreated UilTokName.h");
-fclose (outfil);
-
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: wmloutmm.c /main/9 1995/08/29 11:10:59 drk $"
-#endif
-#endif
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
- * This module contains routines responsible for writing the .mm files
- * produced by WML. All files are written into the current directory.
- *
- * Input:
- * The resolved objects
- *
- * Output:
- * wml-uil.mm
- *
- */
-
-
-#include "wml.h"
-
-#if defined(__STDC__)
-#include <string.h>
-#endif
-#include <stdio.h>
-
-
-/*
- * Routines used only in this module
- */
-void wmlOutputWmlUilMm ();
-void wmlOutputWmlUilMmClass ();
-
-/*
- * globals
- */
-int tabno = 1; /* table number */
-
-/*
- * lists re-used repeatedly to order lists for printing
- */
-DynamicHandleListDef mm_arg;
-DynamicHandleListDefPtr mm_arg_ptr = &mm_arg;
-DynamicHandleListDef mm_rsn;
-DynamicHandleListDefPtr mm_rsn_ptr = &mm_rsn;
-DynamicHandleListDef mm_ctl;
-DynamicHandleListDefPtr mm_ctl_ptr = &mm_ctl;
-
-
-\f
-/*
- * Output control routine, which simply outputs each .mm file in turn.
- */
-
-void wmlOutputMmFiles ()
-
-{
-
-wmlOutputWmlUilMm ();
-
-}
-
-
-\f
-/*
- * Routine to write out wml-uil.mm
- *
- * This .mm file contains the tables which are to be included as an
- * appendix to the Uil manual. The tables give the arguments with their
- * default values, reasons, constraints, and controls for each class
- * in the class vectors.
- */
-
-void wmlOutputWmlUilMm ()
-
-{
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-WmlClassDefPtr clsobj; /* class object */
-
-
-
-/*
- * Open the output file. Write the canned header stuff
- */
-outfil = fopen ("wml-uil.mm", "w");
-if ( outfil == NULL )
- {
- printf ("\nCouldn't open wml-uil.mm");
- return;
- }
-
-/*
- * Initialize order lists for the tables.
- */
-wmlInitHList (mm_arg_ptr, 200, TRUE);
-wmlInitHList (mm_rsn_ptr, 200, TRUE);
-wmlInitHList (mm_ctl_ptr, 200, TRUE);
-
-/*
- * Write out a table for each class, for both widget and gadget variants
- */
-for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- wmlOutputWmlUilMmClass (outfil, clsobj, clsobj->syndef->name);
- }
-
-/*
- * close the output file
- */
-printf ("\nCreated wml-uil.mm");
-fclose (outfil);
-
-}
-
-
-\f
-/*
- * Routine to write a table for a class entry
- */
-
-void wmlOutputWmlUilMmClass (outfil, clsobj, name)
- FILE *outfil;
- WmlClassDefPtr clsobj;
- char *name;
-
-{
-
-char *canned1 =
-".bp\n\
-.ps 12\n";
-
-char *canned2 =
-".ps 10\n\
-.vs 12\n\
-.LP\n\
-.TS H\n\
-tab(@);\n\
-lB lB\n\
-l l.\n\
-_\n\
-.sp 6p\n\
-Controls@Reasons\n\
-.sp 6p\n\
-_\n\
-.sp 6p\n\
-.TH\n";
-
-char *canned3 =
-".TE\n\
-.TS H\n\
-tab(@);\n\
-lB lB lB\n\
-l l l.\n\
-_\n\
-.sp 6p\n\
-UIL Argument Name@Argument Type@Default Value\n\
-.sp 6p\n\
-_\n\
-.sp 6p\n\
-.TH\n";
-
-char *canned4 =
-".TE\n";
-
-WmlClassResDefPtr argref; /* current argument reference */
-WmlClassResDefPtr rsnref; /* current reason reference */
-WmlClassCtrlDefPtr ctlref; /* current controls reference */
-int argndx; /* to access ordered vector */
-int rsnndx; /* to access ordered vector */
-int ctlndx; /* to access ordered vector */
-
-
-/*
- * Write out header information
- */
-fprintf (outfil, canned1);
-fprintf (outfil, "%s\n", name);
-fprintf (outfil, canned2);
-
-/*
- * Alphabetize the controls, reason, and argument lists
- */
-wmlClearHList (mm_arg_ptr);
-wmlClearHList (mm_rsn_ptr);
-wmlClearHList (mm_ctl_ptr);
-
-argref = clsobj->arguments;
-while ( argref!= NULL )
- {
- while ( argref != NULL && argref->exclude == WmlAttributeTrue )
- argref = argref->next;
- if ( argref != NULL )
- {
- wmlInsertInHList (mm_arg_ptr,
- argref->act_resource->syndef->name,
- (ObjectPtr)argref);
- argref = argref->next;
- }
- }
-
-rsnref = clsobj->reasons;
-while ( rsnref!=NULL )
- {
- while ( rsnref != NULL && rsnref->exclude == WmlAttributeTrue )
- rsnref = rsnref->next;
- if ( rsnref != NULL )
- {
- wmlInsertInHList (mm_rsn_ptr,
- rsnref->act_resource->syndef->name,
- (ObjectPtr)rsnref);
-
- rsnref = rsnref->next;
- }
- }
-
-ctlref = clsobj->controls;
-while ( ctlref != NULL )
- {
- wmlInsertInHList (mm_ctl_ptr,
- ctlref->ctrl->syndef->name,
- (ObjectPtr)ctlref);
- ctlref = ctlref->next;
- }
-
-/*
- * Write out the controls and reason table.
- */
-rsnndx = 0;
-ctlndx = 0;
-if ( mm_ctl_ptr->cnt == 0 )
- fprintf (outfil, "No children are supported");
-while ( rsnndx<mm_rsn_ptr->cnt || ctlndx<mm_ctl_ptr->cnt )
- {
- if ( ctlndx < mm_ctl_ptr->cnt )
- {
- ctlref = (WmlClassCtrlDefPtr) mm_ctl_ptr->hvec[ctlndx].objptr;
- fprintf (outfil, "%s@",
- ctlref->ctrl->syndef->name);
- ctlndx += 1;
- }
- else
- fprintf (outfil, "@");
-
- if ( rsnndx < mm_rsn_ptr->cnt )
- {
- rsnref = (WmlClassResDefPtr) mm_rsn_ptr->hvec[rsnndx].objptr;
- fprintf (outfil, "%s\n",
- rsnref->act_resource->syndef->name);
- rsnndx += 1;
- }
- else
- fprintf (outfil, "\n");
- }
-fprintf (outfil, canned3);
-
-/*
- * Write out the argument table
- */
-argndx = 0;
-while ( argndx < mm_arg_ptr->cnt )
- {
- argref = (WmlClassResDefPtr) mm_arg_ptr->hvec[argndx].objptr;
- fprintf (outfil, "%s@%s@",
- argref->act_resource->syndef->name,
- argref->act_resource->dtype_def->syndef->name);
- if ( argref->dflt != NULL )
- {
- if ( strchr(argref->dflt,' ') != 0 )
- fprintf (outfil, "T{\n%s\nT}\n",
- argref->dflt);
- else
- fprintf (outfil, "%s\n",
- argref->dflt);
- }
- else
- {
- if (argref->act_resource->syndef->dflt != NULL) {
- if ( strchr(argref->act_resource->syndef->dflt,' ') != 0 )
- fprintf (outfil, "T{\n%s\nT}\n",
- argref->act_resource->syndef->dflt);
- else
- fprintf (outfil, "%s\n",
- argref->act_resource->syndef->dflt);
- }
- else
- fprintf (outfil, " \n");
- }
- argndx += 1;
- }
-fprintf (outfil, canned4);
-
-}
-
-
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: wmloutp1.c /main/7 1995/07/13 21:04:31 drk $"
-#endif
-#endif
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
- * This is the standard output module for creating the UIL compiler
- * .h files.
- */
-
-
-#include "wml.h"
-
-
-void wmlOutput ()
-
-{
-
-/*
- * Output the .h files
- */
-wmlOutputHFiles ();
-if ( wml_err_count > 0 ) return;
-
-/*
- * Output the keyword (token) tables
- */
-wmlOutputKeyWordFiles ();
-if ( wml_err_count > 0 ) return;
-
-/*
- * Output the .mm files
- */
-wmlOutputMmFiles ();
-if ( wml_err_count > 0 ) return;
-
-return;
-
-}
-
+++ /dev/null
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-/* "$TOG: wmlparse.y /main/10 1997/04/14 12:56:03 dbl $" */
-/*
- * This file defines the grammar for the Motif Widget Meta Language (WML),
- * the declarative language which describes the widget, gadgets, and
- * resources in the UIL language.
- */
-
-
-%{
-
-#include "wml.h"
-
-#if defined(__STDC__)
-#include <string.h> /* for strcpy() */
-#endif
-
-#ifndef XmConst
-#if (defined(__STDC__) && __STDC__) || !defined( NO_CONST )
-#define XmConst const
-#else
-#define XmConst
-#endif /* __STDC__ */
-#endif /* XmConst */
-
-/*
- * Undefine NULL, since it is defined in stdio
- */
-#undef NULL
-
-%}
-
-
-/*
- * Tokens defining terminals of the language
- */
-
-/*
- * token 0 is EOF, not defined here
- */
-
-/*
- * WML statements
- */
-%token CLASS 1 /* CLASS statement */
-%token RESOURCE 2 /* RESOURCE statement */
-%token DATATYPE 3 /* DATATYPE statement */
-%token CONTROLLIST 4 /* CONTROLLIST statement */
-%token ENUMERATIONSET 5 /* ENUMERATIONSET statement */
-%token ENUMERATIONVALUE 6 /* ENUMERATIONVALUE statement */
-%token CHARACTERSET 7 /* CHARACTERSET statement */
-%token CHILD 50 /* CHILD statement */
-/*
- * Statement attributes
- */
-%token DOCNAME 8 /* DOCNAME attribute */
-%token CONVFUNC 9 /* CONVENIENCEFUNCTION attribute */
-%token ALIAS 10 /* ALIAS attribute */
-%token TYPE 11 /* TYPE attribute */
-%token RESOURCELITERAL 12 /* RESOURCELITERAL attribute */
-%token RELATED 13 /* RELATED attribute */
-%token INTERNALLITERAL 14 /* INTERNALLITERAL attribute */
-%token XRMRESOURCE 15 /* XRMRESOURCE attribute */
-%token EXCLUDE 16 /* EXCLUDE attribute */
-%token RESOURCES 17 /* RESOURCES attribute */
-%token SUPERCLASS 18 /* SUPERCLASS attribute */
-%token CONTROLS 19 /* CONTROLS attribute */
-%token WIDGETCLASS 20 /* WIDGETCLASS attribute */
-%token DIALOGCLASS 21 /* DIALOGCLASS attribute */
-%token DEFAULT 22 /* DEFAULT attribute */
-%token ENUMLITERAL 23 /* ENUMLITERAL attribute */
-%token XMSTRINGCHARSETNAME 24 /* XMSTRINGCHARSETNAME attribute */
-%token DIRECTION 25 /* DIRECTION attribute */
-%token PARSEDIRECTION 26 /* PARSEDIRECTION attribute */
-%token CHARACTERSIZE 27 /* CHARACTERSIZE attribute */
-%token CTRLMAPSRESOURCE 28 /* CTRLMAPSRESOURCE attribute */
-%token CHILDREN 51 /* CHILDREN attribute */
-%token PARENTCLASS 52 /* PARENTCLASS attribute */
-/*
- * Other keywords
- */
-%token METACLASS 29 /* CLASS type */
-%token WIDGET 30 /* CLASS type */
-%token GADGET 31 /* CLASS type */
-%token ARGUMENT 32 /* RESOURCE type */
-%token REASON 33 /* RESOURCE type */
-%token CONSTRAINT 34 /* RESOURCE type */
-%token SUBRESOURCE 35 /* RESOURCE type */
-%token ATTRTRUE 36 /* attribute value */
-%token ATTRFALSE 37 /* attribute value */
-%token LEFTTORIGHT 38 /* DIRECTION attribute */
-%token RIGHTTOLEFT 39 /* DIRECTION attribute */
-%token ONEBYTE 40 /* CHARACTERSIZE attribute */
-%token TWOBYTE 41 /* CHARACTERSIZE attribute */
-%token MIXED1_2BYTE 42 /* CHARACTERSIZE attribute */
-
-
-/*
- * Special characters
- */
-%token COLON 43
-%token SEMICOLON 44
-%token EQUALS 45
-%token LBRACE 46
-%token RBRACE 47
-
-/*
- * non-terminals
- */
-%token STRING 48 /* Any user literal */
-
-/*
- * Others
- */
-%token ERRORTOKEN 49 /* Any unrecognized character */
-
-
-%start statement_block_list
-
-%%
-
-\f
-/*
- * Productions of the WML grammar. All routines assume that current
- * data structures are kept in globals. This works as the language has
- * no recursive elements.
- */
-
-/*
- * The language consists of blocks of statements. The blocks may occur
- * in any order, and blocks of the same kind may be arbitrarily repeated.
- */
-
-statement_block_list
- : /* empty */
- | statement_block_list statement_block
- ;
-
-statement_block
- : class_statement_block
- | resource_statement_block
- | child_statement_block
- | datatype_statement_block
- | ctrlist_statement_block
- | enumset_statement_block
- | enumval_statement_block
- | charset_statement_block
- | error { LexIssueError(0); } SEMICOLON
- ;
-
-
-/*
- * Statement blocks. Each statement block begins with its identifying
- * keyword, then includes an arbitrary number of statements
- */
-class_statement_block
- : CLASS
- class_statement_list
- ;
-
-class_statement_list
- : class_statement SEMICOLON
- | class_statement_list class_statement SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-resource_statement_block
- : RESOURCE
- resource_statement_list
- ;
-
-resource_statement_list
- : resource_statement SEMICOLON
- | resource_statement_list resource_statement SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-child_statement_block
- : CHILD
- child_statement_list
- ;
-
-child_statement_list
- : child_statement SEMICOLON
- | child_statement_list child_statement SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-datatype_statement_block
- : DATATYPE
- datatype_statement_list
- ;
-
-datatype_statement_list
- : datatype_statement SEMICOLON
- | datatype_statement_list datatype_statement SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-ctrlist_statement_block
- : CONTROLLIST
- ctrlist_statement_list
- ;
-
-ctrlist_statement_list
- : ctrlist_statement SEMICOLON
- | ctrlist_statement_list ctrlist_statement SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-enumset_statement_block
- : ENUMERATIONSET
- enumset_statement_list
- ;
-
-enumset_statement_list
- : enumset_statement SEMICOLON
- | enumset_statement_list enumset_statement SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-enumval_statement_block
- : ENUMERATIONVALUE
- enumval_statement_list
- ;
-
-enumval_statement_list
- : enumval_statement SEMICOLON
- | enumval_statement_list enumval_statement SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-charset_statement_block
- : CHARACTERSET
- charset_statement_list
- ;
-
-charset_statement_list
- : charset_statement SEMICOLON
- | charset_statement_list charset_statement SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-
-\f
-/*
- * The CLASS statement
- */
-class_statement
- : name
- COLON
- class_type
- { wmlCreateClass (yynameval, yytknval1); }
- class_definition
- ;
-
-class_type
- : METACLASS { yytknval1 = METACLASS; }
- | WIDGET { yytknval1 = WIDGET; }
- | GADGET { yytknval1 = GADGET; }
- ;
-
-class_definition
- : /* empty */
- | LBRACE RBRACE
- | LBRACE class_attribute_list RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-class_attribute_list
- : class_attribute
- | class_attribute_list class_attribute
- ;
-
-class_attribute
- : class_attribute_name
- EQUALS
- STRING
- { wmlAddClassAttribute (yytknval1, yystringval); }
- SEMICOLON
- | boolean_class_attribute_name
- EQUALS
- boolean_attribute_value
- { wmlAddClassAttribute (yytknval1, yytknval2); }
- SEMICOLON
- | class_resources SEMICOLON
- | class_controls SEMICOLON
- | class_children SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-class_attribute_name
- : SUPERCLASS { yytknval1 = SUPERCLASS; }
- | PARENTCLASS { yytknval1 = PARENTCLASS; }
- | INTERNALLITERAL { yytknval1 = INTERNALLITERAL; }
- | DOCNAME { yytknval1 = DOCNAME; }
- | CONVFUNC { yytknval1 = CONVFUNC; }
- | WIDGETCLASS { yytknval1 = WIDGETCLASS; }
- | CTRLMAPSRESOURCE { yytknval1 = CTRLMAPSRESOURCE; }
- ;
-
-boolean_class_attribute_name
- : DIALOGCLASS { yytknval1 = DIALOGCLASS; }
-
-boolean_attribute_value
- : ATTRTRUE { yytknval2 = ATTRTRUE; }
- | ATTRFALSE { yytknval2 = ATTRFALSE; }
- ;
-
-class_resources
- : RESOURCES class_resources_block
- ;
-
-class_resources_block
- : /* empty */
- | LBRACE RBRACE
- | LBRACE class_resource_list RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-class_resource_list
- : class_resource_element
- | class_resource_list class_resource_element
- ;
-
-class_resource_element
- : name
- { wmlAddClassResource (yynameval); }
- class_resource_attributes
- SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-class_resource_attributes
- : /* empty */
- | LBRACE RBRACE
- | LBRACE class_resource_attribute_list RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-class_resource_attribute_list
- : class_resource_attribute_element
- | class_resource_attribute_list class_resource_attribute_element
- ;
-
-class_resource_attribute_element
- : class_resource_attribute_name
- EQUALS
- STRING
- { wmlAddClassResourceAttribute (yytknval1, yystringval); }
- SEMICOLON
- | boolean_class_resource_attribute_name
- EQUALS
- boolean_attribute_value
- { wmlAddClassResourceAttribute (yytknval1, yytknval2); }
- SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-class_resource_attribute_name
- : TYPE { yytknval1 = TYPE; }
- | DEFAULT { yytknval1 = DEFAULT; }
- ;
-
-boolean_class_resource_attribute_name
- : EXCLUDE { yytknval1 = EXCLUDE; }
- ;
-
-class_controls
- : CONTROLS class_controls_block
- ;
-
-class_controls_block
- : /* empty */
- | LBRACE RBRACE
- | LBRACE class_controls_list RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-class_controls_list
- : class_controls_element
- | class_controls_list class_controls_element
- ;
-
-class_controls_element
- : name
- { wmlAddClassControl (yynameval); }
- class_controls_attributes
- SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-class_controls_attributes
- : /* empty */
- | LBRACE RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-class_children
- : CHILDREN class_children_block
- ;
-
-class_children_block
- : /* empty */
- | LBRACE RBRACE
- | LBRACE class_children_list RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-class_children_list
- : class_children_element
- | class_children_list class_children_element
- ;
-
-class_children_element
- : name
- { wmlAddClassChild (yynameval); }
- SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-
-\f
-/*
- * The RESOURCE statement
- */
-resource_statement
- : name
- COLON
- resource_type
- { wmlCreateResource (yynameval, yytknval1); }
- resource_definition
- ;
-
-resource_type
- : ARGUMENT { yytknval1 = ARGUMENT; }
- | REASON { yytknval1 = REASON; }
- | CONSTRAINT { yytknval1 = CONSTRAINT; }
- | SUBRESOURCE { yytknval1 = SUBRESOURCE; }
- ;
-
-resource_definition
- : /* empty */
- | LBRACE RBRACE
- | LBRACE resource_attribute_list RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-resource_attribute_list
- : resource_attribute
- | resource_attribute_list resource_attribute
- ;
-
-resource_attribute
- : resource_attribute_name
- EQUALS
- STRING
- { wmlAddResourceAttribute (yytknval1, yystringval); }
- SEMICOLON
- | boolean_resource_resource_attribute_name
- EQUALS
- boolean_attribute_value
- { wmlAddResourceAttribute (yytknval1, yytknval2); }
- SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-resource_attribute_name
- : TYPE { yytknval1 = TYPE; }
- | RESOURCELITERAL { yytknval1 = RESOURCELITERAL; }
- | ENUMERATIONSET { yytknval1 = ENUMERATIONSET; }
- | INTERNALLITERAL { yytknval1 = INTERNALLITERAL; }
- | RELATED { yytknval1 = RELATED; }
- | DOCNAME { yytknval1 = DOCNAME; }
- | DEFAULT { yytknval1 = DEFAULT; }
- | ALIAS { yytknval1 = ALIAS; }
- ;
-
-boolean_resource_resource_attribute_name
- : XRMRESOURCE { yytknval1 = XRMRESOURCE; }
- ;
-
-\f
-/*
- * The CHILD statement
- */
-child_statement
- : name COLON STRING
- { wmlCreateChild(yynameval, yystringval); }
- ;
-
-\f
-/*
- * DATATYPE statement
- */
-datatype_statement
- : name
- { wmlCreateDatatype (yystringval); }
- datatype_definition
- ;
-
-datatype_definition
- : /* empty */
- | LBRACE RBRACE
- | LBRACE datatype_attribute_list RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-datatype_attribute_list
- : datatype_attribute
- | datatype_attribute_list datatype_attribute
- ;
-
-datatype_attribute
- : datatype_attribute_name
- EQUALS
- STRING
- { wmlAddDatatypeAttribute (yytknval1, yystringval); }
- SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-datatype_attribute_name
- : INTERNALLITERAL { yytknval1 = INTERNALLITERAL; }
- | DOCNAME { yytknval1 = DOCNAME; }
- | XRMRESOURCE { yytknval1 = XRMRESOURCE; }
- ;
-
-
-\f
-/*
- * The CONTROLLIST statement
- */
-ctrlist_statement
- : name
- { wmlCreateOrAppendCtrlList (yynameval); }
- ctrlist_definition
- ;
-
-ctrlist_definition
- : /* empty */
- | LBRACE RBRACE
- | LBRACE ctrlist_controls_list RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-ctrlist_controls_list
- : ctrlist_control
- | ctrlist_controls_list ctrlist_control
- ;
-
-ctrlist_control
- : name
- { wmlAddCtrlListControl (yynameval); }
- ctrlist_controls_attributes
- SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-ctrlist_controls_attributes
- : /* empty */
- | LBRACE RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-
-\f
-/*
- * The ENUMERATIONSET statement
- */
-enumset_statement
- : name
- COLON
- enumset_data_type
- { wmlCreateEnumSet (yynameval, yystringval); }
- enumset_definition
- ;
-
-enumset_data_type
- :
- STRING
- ;
-
-enumset_definition
- : /* empty */
- | LBRACE RBRACE
- | LBRACE enumset_value_list RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-enumset_value_list
- : enumset_value
- | enumset_value_list enumset_value
- ;
-
-enumset_value
- : name
- { wmlAddEnumSetValue (yynameval); }
- SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-
-\f
-/*
- * The ENUMERATIONVALUE statement
- */
-enumval_statement
- : name
- COLON
- { wmlCreateEnumValue (yynameval); }
- enumvalue_definition
- ;
-
-enumvalue_definition
- : /* empty */
- | LBRACE RBRACE
- | LBRACE enumvalue_attributes_list RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-enumvalue_attributes_list
- : enumvalue_attribute
- | enumvalue_attributes_list enumvalue_attribute
- ;
-
-enumvalue_attribute
- : enumvalue_attribute_name
- EQUALS
- STRING
- { wmlAddEnumValueAttribute (yytknval1, yystringval); }
- SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-enumvalue_attribute_name
- : ENUMLITERAL { yytknval1 = ENUMLITERAL; }
- ;
-
-
-\f
-/*
- * CHARACTERSET statement
- */
-charset_statement
- : name
- { wmlCreateCharset (yystringval); }
- charset_definition
- ;
-
-charset_definition
- : /* empty */
- | LBRACE RBRACE
- | LBRACE charset_attribute_list RBRACE
- | error { LexIssueError(RBRACE); } RBRACE
- ;
-
-charset_attribute_list
- : charset_attribute
- | charset_attribute_list charset_attribute
- ;
-
-charset_attribute
- : charset_attribute_name
- EQUALS
- STRING
- { wmlAddCharsetAttribute (yytknval1, yystringval); }
- SEMICOLON
- | predefined_charset_attribute_name
- EQUALS
- predefined_charset_attribute_value
- { wmlAddCharsetAttribute (yytknval1, yytknval2); }
- SEMICOLON
- | error { LexIssueError(SEMICOLON); } SEMICOLON
- ;
-
-charset_attribute_name
- : INTERNALLITERAL { yytknval1 = INTERNALLITERAL; }
- | ALIAS { yytknval1 = ALIAS; }
- | XMSTRINGCHARSETNAME { yytknval1 = XMSTRINGCHARSETNAME; }
- ;
-
-predefined_charset_attribute_name
- : DIRECTION { yytknval1 = DIRECTION; }
- | PARSEDIRECTION { yytknval1 = PARSEDIRECTION; }
- | CHARACTERSIZE { yytknval1 = CHARACTERSIZE; }
- ;
-
-predefined_charset_attribute_value
- : LEFTTORIGHT { yytknval2 = LEFTTORIGHT; }
- | RIGHTTOLEFT { yytknval2 = RIGHTTOLEFT; }
- | ONEBYTE { yytknval2 = ONEBYTE; }
- | TWOBYTE { yytknval2 = TWOBYTE; }
- | MIXED1_2BYTE { yytknval2 = MIXED1_2BYTE; }
-
-
-\f
-/*
- * Other productions
- */
-name
- : STRING
- { strcpy (yynameval, (XmConst char *)yystringval); }
- ;
-
-%%
-
-/*
- * Dummmy error routine, since we output our own.
- */
-int yyerror (s)
-char *s;
-{
- return 0;
-}
-
-
-#include "wmllex.c"
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: wmlresolve.c /main/9 1995/08/29 11:11:05 drk $"
-#endif
-#endif
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
- * This module contains all routines which perform semantic analysis of
- * the parsed WML specification. It is responsible for building all
- * ordered structures which can be directly translated into literal
- * code values for the various .h files. It is responsible for performing
- * inheritance of resources for all classes.
- *
- * Input:
- * the ordered list of syntactic objects in wml_synobj_ptr
- *
- * Output:
- *
- */
-
-
-#include "wml.h"
-
-#if defined(__STDC__)
-#include <stdlib.h>
-#endif
-#include <stdio.h>
-
-/*
- * Routines used only in this module
- */
-void wmlResolveGenerateSymK ();
-void wmlResolveValidateClass ();
-void wmlResolvePrintReport ();
-
-void wmlResolveSymKDataType ();
-void wmlResolveSymKChild ();
-void wmlResolveSymKEnumVal ();
-void wmlResolveSymKEnumSet ();
-void wmlResolveSymKReason ();
-void wmlResolveSymKArgument ();
-void wmlResolveSymKRelated ();
-void wmlResolveSymKClass ();
-void wmlResolveSymKCtrlList ();
-void wmlResolveSymKCharSet ();
-
-void wmlResolveClassInherit ();
-void wmlResolveClearRefPointers ();
-void wmlResolveInitRefObj ();
-void wmlResolveInitChildRefObj ();
-
-void wmlResolvePrintClass ();
-void wmlResolvePrintClassArgs ();
-void wmlResolvePrintClassReasons ();
-
-ObjectPtr wmlResolveFindObject ();
-void wmlIssueReferenceError ();
-void wmlIssueIllegalReferenceError ();
-void wmlIssueError ();
-
-
-\f
-/*
- * The control routine for semantic analysis. It calls the various phases.
- */
-
-void wmlResolveDescriptors ()
-
-{
-
-/*
- * Perform the code assignment pass. This results in assignment of sym_k_...
- * codes to all entities. Also, all objects and cross-linking are validated.
- */
-wmlResolveGenerateSymK ();
-printf ("\nInitial validation and reference resolution complete");
-
-/*
- * Perform class inheritance and validation
- */
-wmlResolveValidateClass ();
-printf ("\nClass validation and inheritance complete");
-
-/*
- * Print a report
- */
-if ( wml_err_count > 0 ) return;
-wmlResolvePrintReport ();
-
-}
-
-
-\f
-/*
- * Routine to linearize and assign sym_k... literals for objects. Simply
- * a dispatching routine.
- */
-
-void wmlResolveGenerateSymK ()
-
-{
-
-/*
- * Process the datatype objects
- */
-wmlResolveSymKDataType ();
-
-/*
- * Process the enumeration value and enumeration sets
- */
-wmlResolveSymKEnumVal ();
-wmlResolveSymKEnumSet ();
-
-/*
- * Process the resources, producing argument and reason vectors.
- */
-wmlResolveSymKReason ();
-wmlResolveSymKArgument ();
-
-/*
- * Bind related arguments
- */
-wmlResolveSymKRelated ();
-
-/*
- * Process the class definitions
- */
-wmlResolveSymKClass ();
-
-/*
- * Process the controls list definitions
- */
-wmlResolveSymKCtrlList ();
-
-/*
- * Process the charset objects
- */
-wmlResolveSymKCharSet ();
-
-/* Process the child definitions. */
-wmlResolveSymKChild();
-
-}
-
-
-\f
-/*
- * Routine to linearize data types
- *
- * - Generate the wml_obj_datatype... vector of resolved data type objects,
- * ordered lexicographically.
- * Do name processing, and acquire links to any other objects named in
- * the syntactic descriptor.
- */
-
-void wmlResolveSymKDataType ()
-
-{
-
-WmlSynDataTypeDefPtr cursyn; /* current syntactic object */
-WmlDataTypeDefPtr newobj; /* new resolved object */
-int ndx; /* loop index */
-
-/*
- * Initialize the object vector. Then process the syntactic vector,
- * processing each datatype object encountered (the vector is ordered).
- * create and append a resolved object for each one encountered. This
- * will be ordered as well.
- */
-wmlInitHList (wml_obj_datatype_ptr, 50, TRUE);
-for ( ndx=0 ; ndx<wml_synobj_ptr->cnt ; ndx++ )
- {
- cursyn = (WmlSynDataTypeDefPtr) wml_synobj_ptr->hvec[ndx].objptr;
- if ( cursyn->validation != WmlDataTypeDefValid ) continue;
-
-/*
- * Create and initialize new object. Append to resolved object vector.
- */
- newobj = (WmlDataTypeDefPtr) malloc (sizeof(WmlDataTypeDef));
- newobj->syndef = cursyn;
- cursyn->rslvdef = newobj;
- if ( cursyn->int_lit != NULL )
- newobj->tkname = cursyn->int_lit;
- else
- newobj->tkname = cursyn->name;
- wmlInsertInHList (wml_obj_datatype_ptr, newobj->tkname, (ObjectPtr)newobj);
-
-/*
- * Validate any object references in the syntactic object
- */
-
- }
-
-}
-
-\f
-/*
- * Routine to linearize children
- *
- * - Generate the wml_obj_child... vector of resolved child objects,
- * ordered lexicographically. Assign sym_k_... values while doing so.
- * Link child to its class.
- */
-
-void wmlResolveSymKChild ()
-
-{
-
-WmlSynChildDefPtr cursyn; /* current syntactic object */
-WmlChildDefPtr newobj; /* new resolved object */
-int code; /* assigned sym_k code value */
-int ndx; /* loop index */
-
-/*
- * Initialize the object vector. Then process the syntactic vector,
- * processing each child object encountered (the vector is ordered).
- * create and append a resolved object for each one encountered. This
- * will be ordered as well.
- */
-wmlInitHList (wml_obj_child_ptr, 50, TRUE);
-for ( ndx=0 ; ndx<wml_synobj_ptr->cnt ; ndx++ )
- {
- cursyn = (WmlSynChildDefPtr) wml_synobj_ptr->hvec[ndx].objptr;
- if ( cursyn->validation != WmlChildDefValid ) continue;
-
-/*
- * Create and initialize new object. Append to resolved object vector.
- */
- newobj = (WmlChildDefPtr) malloc (sizeof(WmlChildDef));
- newobj->syndef = cursyn;
- cursyn->rslvdef = newobj;
- newobj->tkname = cursyn->name;
- wmlInsertInHList (wml_obj_child_ptr, newobj->tkname, (ObjectPtr)newobj);
-
-/* Link class to the resolved object. */
-if (cursyn->class != NULL)
- newobj->class = (WmlClassDefPtr)
- wmlResolveFindObject(cursyn->class, WmlClassDefValid, cursyn->name);
- }
-
-/*
- * All objects are in the vector. The order is the code order, so
- * process it again and assign codes to each object
- */
-code = 1;
-for ( ndx=0 ; ndx<wml_obj_child_ptr->cnt ; ndx++ )
- {
- newobj = (WmlChildDefPtr) wml_obj_child_ptr->hvec[ndx].objptr;
- newobj->sym_code = code;
- code += 1;
- }
-
-}
-
-
-\f
-/*
- * Routine to linearize and assign sym_k values to enumeration values
- *
- * - Generate the wml_obj_datatype... vector of resolved data type objects,
- * ordered lexicographically. No sym_k_... values are needed for
- * enumeration values, so don't assign any.
- */
-
-void wmlResolveSymKEnumVal ()
-
-{
-
-WmlSynEnumSetDefPtr cures; /* current enumeration set */
-WmlSynEnumSetValDefPtr curesv; /* current enum set value */
-WmlSynEnumValueDefPtr cursyn; /* current syntactic object */
-WmlEnumValueDefPtr newobj; /* new resolved object */
-int ndx; /* loop index */
-int code; /* sym_k_... code */
-
-
-/*
- * Perform defaulting. Process all the enumeration sets, and define a
- * syntactic object for every enumeration value named in an enumeration set
- * which has no syntactic entry. If there is an error in a name, then
- * this error won't be detected until we attempt to compile the output .h files.
- */
-for ( ndx=0 ; ndx<wml_synobj_ptr->cnt ; ndx++ )
- {
- cures = (WmlSynEnumSetDefPtr) wml_synobj_ptr->hvec[ndx].objptr;
- if ( cures->validation != WmlEnumSetDefValid ) continue;
- for (curesv=cures->values ; curesv!=NULL ; curesv=curesv->next)
- if ( wmlFindInHList(wml_synobj_ptr,curesv->name) < 0 )
- wmlCreateEnumValue (curesv->name);
- }
-
-/*
- * Initialize the object vector. Then process the syntactic vector,
- * processing each enumeration value object encountered (the vector is ordered).
- * create and append a resolved object for each one encountered. This
- * will be ordered as well.
- */
-wmlInitHList (wml_obj_enumval_ptr, 50, TRUE);
-for ( ndx=0 ; ndx<wml_synobj_ptr->cnt ; ndx++ )
- {
- cursyn = (WmlSynEnumValueDefPtr) wml_synobj_ptr->hvec[ndx].objptr;
- if ( cursyn->validation != WmlEnumValueDefValid ) continue;
-
-/*
- * Create and initialize new object. Append to resolved object vector.
- */
- newobj = (WmlEnumValueDefPtr) malloc (sizeof(WmlEnumValueDef));
- newobj->syndef = cursyn;
- cursyn->rslvdef = newobj;
- wmlInsertInHList (wml_obj_enumval_ptr, cursyn->name, (ObjectPtr)newobj);
- }
-
-/*
- * All objects are in the vector. That order is the code order, so
- * process it again and assign codes to each object
- */
-code = 1;
-for ( ndx=0 ; ndx<wml_obj_enumval_ptr->cnt ; ndx++ )
- {
- newobj = (WmlEnumValueDefPtr) wml_obj_enumval_ptr->hvec[ndx].objptr;
- newobj->sym_code = code;
- code += 1;
- }
-
-}
-
-
-\f
-/*
- * Routine to linearize and assign sym_k values to enumeration sets
- *
- * - Generate the wml_obj_datatype... vector of resolved data type objects,
- * ordered lexicographically. No sym_k_... values are needed for
- * enumeration values, so don't assign any.
- */
-
-void wmlResolveSymKEnumSet ()
-
-{
-
-WmlSynEnumSetDefPtr cursyn; /* current syntactic object */
-WmlEnumSetDefPtr newobj; /* new resolved object */
-int ndx; /* loop index */
-int code; /* sym_k_... code */
-WmlSynEnumSetValDefPtr esvelm; /* current syntactic list element */
-WmlEnumValueDefPtr evobj; /* current enumeration value */
-WmlEnumSetValDefPtr esvobj; /* current list element */
-
-/*
- * Initialize the object vector. Then process the syntactic vector,
- * processing each enumeration set object encountered (the vector is ordered).
- * create and append a resolved object for each one encountered. This
- * will be ordered as well.
- */
-wmlInitHList (wml_obj_enumset_ptr, 20, TRUE);
-for ( ndx=0 ; ndx<wml_synobj_ptr->cnt ; ndx++ )
- {
- cursyn = (WmlSynEnumSetDefPtr) wml_synobj_ptr->hvec[ndx].objptr;
- if ( cursyn->validation != WmlEnumSetDefValid ) continue;
-
-/*
- * Create and initialize new object. Append to resolved object vector.
- */
- newobj = (WmlEnumSetDefPtr) malloc (sizeof(WmlEnumSetDef));
- newobj->syndef = cursyn;
- cursyn->rslvdef = newobj;
- newobj->tkname = cursyn->name;
- newobj->dtype_def = (WmlDataTypeDefPtr)
- wmlResolveFindObject (cursyn->datatype,
- WmlDataTypeDefValid,
- cursyn->name);
- wmlInsertInHList (wml_obj_enumset_ptr, newobj->tkname, (ObjectPtr)newobj);
- }
-
-/*
- * All objects are in the vector. That order is the code order, so
- * process it again and assign codes to each object. Simultaneously construct
- * a vector of resolved enumeration values, and count them.
- */
-code = 1;
-for ( ndx=0 ; ndx<wml_obj_enumset_ptr->cnt ; ndx++ )
- {
- newobj = (WmlEnumSetDefPtr) wml_obj_enumset_ptr->hvec[ndx].objptr;
- newobj->sym_code = code;
- code += 1;
-
-/*
- * Validate and construct a resolved enumeration value list
- */
- cursyn = newobj->syndef;
- newobj->values_cnt = 0;
- newobj->values = NULL;
- for ( esvelm=cursyn->values ; esvelm!=NULL ; esvelm=esvelm->next )
- {
- evobj = (WmlEnumValueDefPtr)
- wmlResolveFindObject (esvelm->name,
- WmlEnumValueDefValid,
- cursyn->name);
- if ( evobj == NULL ) continue;
- esvobj = (WmlEnumSetValDefPtr) malloc (sizeof(WmlEnumSetValDef));
- esvobj->value = evobj;
- esvobj->next = newobj->values;
- newobj->values = esvobj;
- newobj->values_cnt += 1;
- }
- }
-
-}
-
-
-\f
-/*
- * Routine to linearize and assign sym_k values to reasons.
- *
- * - Generate the wml_obj_reason... vector of resolved reason objects,
- * ordered lexicographically. Assign a sym_k_... value as this is done.
- * Do name processing, and acquire links to any other objects named in
- * the syntactic descriptor.
- */
-
-void wmlResolveSymKReason ()
-
-{
-
-WmlSynResourceDefPtr cursyn; /* current syntactic object */
-WmlResourceDefPtr newobj; /* new resolved object */
-int ndx; /* loop index */
-int code; /* assigned sym_k code value */
-char errmsg[300];
-
-/*
- * Initialize the object vector. Then process the syntactic vector,
- * processing each reason resource object encountered (the vector is ordered).
- * create and append a resolved object for each one encountered. This
- * will be ordered as well.
- */
-wmlInitHList (wml_obj_reason_ptr, 100, TRUE);
-for ( ndx=0 ; ndx<wml_synobj_ptr->cnt ; ndx++ )
- {
- cursyn = (WmlSynResourceDefPtr) wml_synobj_ptr->hvec[ndx].objptr;
- if ( cursyn->validation != WmlResourceDefValid ) continue;
- if ( cursyn->type != WmlResourceTypeReason ) continue;
- newobj = (WmlResourceDefPtr) malloc (sizeof(WmlResourceDef));
-
-/*
- * Create and initialize new object. Append to resolved object vector.
- */
- newobj->syndef = cursyn;
- cursyn->rslvdef = newobj;
- if ( cursyn->int_lit != NULL )
- newobj->tkname = cursyn->int_lit;
- else
- newobj->tkname = cursyn->name;
- newobj->dtype_def = NULL;
- newobj->enumset_def = NULL;
- newobj->related_code = 0;
- wmlInsertInHList (wml_obj_reason_ptr, newobj->tkname, (ObjectPtr)newobj);
-
-/*
- * Validate any object references in the syntactic object
- * Reason can't bind to some objects.
- */
- if ( cursyn->datatype != NULL )
- wmlIssueIllegalReferenceError (cursyn->name, "DataType");
-
- }
-
-/*
- * All objects are in the vector. That order is the code order, so
- * process it again and assign codes to each object
- */
-code = 1;
-for ( ndx=0 ; ndx<wml_obj_reason_ptr->cnt ; ndx++ )
- {
- newobj = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[ndx].objptr;
- newobj->sym_code = code;
- code += 1;
- }
-
-}
-
-
-\f
-/*
- * Routine to linearize and assign sym_k values to arguments.
- *
- * - Generate the wml_obj_arg... vector of resovled reason objects,
- * ordered lexicographically. Assign a sym_k_... values while doing so.
- * validate the data type for each argument, and link it to its data type
- * object.
- * Do name processing, and acquire links to any other objects named in
- * the syntactic descriptor.
- */
-
-void wmlResolveSymKArgument ()
-
-{
-
-
-WmlSynResourceDefPtr cursyn; /* current syntactic object */
-WmlResourceDefPtr newobj; /* new resolved object */
-int ndx; /* loop index */
-int code; /* assigned sym_k code value */
-char errmsg[300];
-
-/*
- * Initialize the object vector. Then process the syntactic vector,
- * processing each reason resource object encountered (the vector is ordered).
- * create and append a resolved object for each one encountered. This
- * will be ordered as well.
- */
-wmlInitHList (wml_obj_arg_ptr, 500, TRUE);
-for ( ndx=0 ; ndx<wml_synobj_ptr->cnt ; ndx++ )
- {
- cursyn = (WmlSynResourceDefPtr) wml_synobj_ptr->hvec[ndx].objptr;
- if ( cursyn->validation != WmlResourceDefValid ) continue;
- if ( cursyn->type == WmlResourceTypeReason ) continue;
- newobj = (WmlResourceDefPtr) malloc (sizeof(WmlResourceDef));
-
-/*
- * Create and initialize new object. Append to resolved object vector.
- */
- newobj->syndef = cursyn;
- cursyn->rslvdef = newobj;
- if ( cursyn->int_lit != NULL )
- newobj->tkname = cursyn->int_lit;
- else
- newobj->tkname = cursyn->name;
- newobj->related_code = 0;
- newobj->enumset_def = NULL;
- wmlInsertInHList (wml_obj_arg_ptr, newobj->tkname, (ObjectPtr)newobj);
-
-/*
- * Validate any object references in the syntactic object
- */
- newobj->dtype_def = (WmlDataTypeDefPtr)
- wmlResolveFindObject (cursyn->datatype,
- WmlDataTypeDefValid,
- cursyn->name);
- if ( cursyn->enumset != NULL )
- newobj->enumset_def = (WmlEnumSetDefPtr)
- wmlResolveFindObject (cursyn->enumset,
- WmlEnumSetDefValid,
- cursyn->name);
-
- }
-
-/*
- * All objects are in the vector. The order is the code order, so
- * process it again and assign codes to each object
- */
-code = 1;
-for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- newobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- newobj->sym_code = code;
- code += 1;
- }
-
-}
-
-
-\f
-/*
- * Routine to resolve related argument references.
- *
- * Search the argument vector for any argument with its related
- * argument set. Find the related argument, and bind the relation.
- * The binding only goes one way.
- */
-
-void wmlResolveSymKRelated ()
-
-{
-
-WmlResourceDefPtr srcobj; /* object with related reference */
-WmlResourceDefPtr dstobj; /* other object in binding */
-WmlSynResourceDefPtr srcsynobj; /* source syntactic object */
-int ndx; /* loop index */
-
-
-/*
- * Scan all arguments for related argument bindings.
- */
-for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- srcobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- srcsynobj = srcobj->syndef;
- if ( srcsynobj->related != NULL )
- {
- dstobj = (WmlResourceDefPtr)
- wmlResolveFindObject (srcsynobj->related,
- WmlResourceDefValid,
- srcsynobj->name);
- if ( dstobj != NULL )
- srcobj->related_code = dstobj->sym_code;
- }
- }
-}
-
-
-\f
-/*
- * Routine to linearize and assign sym_k values to classes
- *
- * There are two linearizations of classes:
- * - all classes in wml_obj_allclass...
- * - all widgets and gadgets in wml_obj_class...
- * Create and linearize all class objects into these vectors. Assign sym_k
- * codes. Link all subclasses to their superclasses. Perform name processing
- * and link to any other named object.
- *
- * Resources are not inherited and linked at this time.
- */
-
-void wmlResolveSymKClass ()
-
-{
-
-WmlSynClassDefPtr cursyn; /* current syntactic object */
-WmlClassDefPtr newobj; /* new resolved object */
-int ndx; /* loop index */
-int code; /* assigned sym_k code value */
-char errmsg[300];
-
-
-/*
- * Initialize the object vectors. Then process the syntactic vector,
- * processing each class object encountered (the vector is ordered).
- * create and append a resolved object for each one encountered. This
- * will be ordered as well.
- */
-wmlInitHList (wml_obj_allclass_ptr, 200, TRUE);
-wmlInitHList (wml_obj_class_ptr, 200, TRUE);
-for ( ndx=0 ; ndx<wml_synobj_ptr->cnt ; ndx++ )
- {
- cursyn = (WmlSynClassDefPtr) wml_synobj_ptr->hvec[ndx].objptr;
- if ( cursyn->validation != WmlClassDefValid ) continue;
-
-/*
- * Create and initialize new object. Append to resolved object vector.
- */
- newobj = (WmlClassDefPtr) malloc (sizeof(WmlClassDef));
- newobj->syndef = cursyn;
- cursyn->rslvdef = newobj;
- newobj->superclass = NULL;
- newobj->parentclass = NULL;
- if ( cursyn->int_lit != NULL )
- newobj->tkname = cursyn->int_lit;
- else
- newobj->tkname = cursyn->name;
- newobj->inherit_done = FALSE;
- newobj->arguments = NULL;
- newobj->reasons = NULL;
- newobj->controls = NULL;
- newobj->children = NULL;
- newobj->variant = NULL;
- newobj->nondialog = NULL;
- newobj->ctrlmapto = NULL;
- switch ( cursyn->type )
- {
- case WmlClassTypeMetaclass:
- wmlInsertInHList
- (wml_obj_allclass_ptr, newobj->tkname, (ObjectPtr)newobj);
- break;
- case WmlClassTypeGadget:
- case WmlClassTypeWidget:
- wmlInsertInHList
- (wml_obj_allclass_ptr, newobj->tkname, (ObjectPtr)newobj);
- wmlInsertInHList
- (wml_obj_class_ptr, newobj->tkname, (ObjectPtr)newobj);
- break;
- }
-
-/*
- * Require a convenience function name
- */
- if ( cursyn->type != WmlClassTypeMetaclass )
- if ( cursyn->convfunc == NULL )
- {
- sprintf (errmsg, "Class %s does not have a convenience function",
- cursyn->name);
- wmlIssueError (errmsg);
- }
-
-/*
- * Validate any object references in the syntactic object
- */
- if ( cursyn->ctrlmapto != NULL )
- newobj->ctrlmapto = (WmlResourceDefPtr)
- wmlResolveFindObject (cursyn->ctrlmapto,
- WmlResourceDefValid,
- cursyn->name);
-
- }
-
-/*
- * All objects are in the vector. That order is the code order, so
- * process it again and assign codes to each object
- */
-code = 1;
-for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- newobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- newobj->sym_code = code;
- code += 1;
- }
-
-}
-
-
-\f
-/*
- * Routine to validate controls lists
- *
- * Construct and linearize resolved controls lists. The linearized list
- * is used to resolve references.
- */
-
-void wmlResolveSymKCtrlList ()
-
-{
-
-WmlSynCtrlListDefPtr cursyn; /* current syntactic object */
-WmlCtrlListDefPtr newobj; /* new resolved object */
-WmlSynClassCtrlDefPtr refptr; /* current controls reference */
-WmlClassCtrlDefPtr ctrlobj; /* resolved control reference */
-WmlClassDefPtr classobj; /* the controlled class */
-int ndx; /* loop index */
-
-
-/*
- * Process each control list. Construct a resolved control list for each
- */
-wmlInitHList (wml_obj_ctrlist_ptr, 20, TRUE);
-for ( ndx=0 ; ndx<wml_synobj_ptr->cnt ; ndx++ )
- {
- cursyn = (WmlSynCtrlListDefPtr) wml_synobj_ptr->hvec[ndx].objptr;
- if ( cursyn->validation != WmlCtrlListDefValid ) continue;
-
-/*
- * Create and initialize new object. Append to resolved object vector.
- */
- newobj = (WmlCtrlListDefPtr) malloc (sizeof(WmlCtrlListDef));
- newobj->syndef = cursyn;
- cursyn->rslvdef = newobj;
- newobj->controls = NULL;
- wmlInsertInHList (wml_obj_ctrlist_ptr, cursyn->name, (ObjectPtr)newobj);
-
-/*
- * Validate and construct a resolved controls reference list.
- */
- for ( refptr=cursyn->controls ; refptr!=NULL ; refptr=refptr->next )
- {
- classobj = (WmlClassDefPtr)
- wmlResolveFindObject (refptr->name,
- WmlClassDefValid,
- cursyn->name);
- if ( classobj == NULL ) continue;
- ctrlobj = (WmlClassCtrlDefPtr) malloc (sizeof(WmlClassCtrlDef));
- ctrlobj->next = newobj->controls;
- newobj->controls = ctrlobj;
- ctrlobj->ctrl = classobj;
- }
- }
-
-}
-
-
-\f
-/*
- * Routine to linearize and assign sym_k values to character sets
- *
- * - Generate the wml_obj_charset... vector of resolved data type objects,
- * ordered lexicographically. Assign a sym_k... value as this is done.
- * Do name processing, and acquire links to any other objects named in
- * the syntactic descriptor.
- */
-
-void wmlResolveSymKCharSet ()
-
-{
-
-WmlSynCharSetDefPtr cursyn; /* current syntactic object */
-WmlCharSetDefPtr newobj; /* new resolved object */
-int ndx; /* loop index */
-int code; /* assigned sym_k code value */
-char errmsg[300];
-
-
-/*
- * Initialize the object vector. Then process the syntactic vector,
- * processing each charset object encountered (the vector is ordered).
- * create and append a resolved object for each one encountered. This
- * will be ordered as well.
- */
-wmlInitHList (wml_obj_charset_ptr, 50, TRUE);
-for ( ndx=0 ; ndx<wml_synobj_ptr->cnt ; ndx++ )
- {
- cursyn = (WmlSynCharSetDefPtr) wml_synobj_ptr->hvec[ndx].objptr;
- if ( cursyn->validation != WmlCharSetDefValid ) continue;
-
-/*
- * Create and initialize new object. Append to resolved object vector.
- */
- newobj = (WmlCharSetDefPtr) malloc (sizeof(WmlCharSetDef));
- newobj->syndef = cursyn;
- cursyn->rslvdef = newobj;
- if ( cursyn->int_lit != NULL )
- newobj->tkname = cursyn->int_lit;
- else
- newobj->tkname = cursyn->name;
- wmlInsertInHList (wml_obj_charset_ptr, newobj->tkname, (ObjectPtr)newobj);
-
-/*
- * Parsing direction defaults to writing direction if unspecified
- */
- if ( cursyn->parsedirection == WmlAttributeUnspecified )
- cursyn->parsedirection = cursyn->direction;
-
-/*
- * Require StandardsName attribute for character set
- */
- if ( cursyn->xms_name == NULL )
- {
- sprintf (errmsg, "CharacterSet %s does not have a StandardsName",
- cursyn->name);
- wmlIssueError (errmsg);
- }
-
- }
-
-/*
- * All objects are in the vector. That order is the code order, so
- * process it again and assign codes to each object. We start at code
- * 2 since 1 is reserved for sym_k_userdefined_charset
- */
-code = 2;
-for ( ndx=0 ; ndx<wml_obj_charset_ptr->cnt ; ndx++ )
- {
- newobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr;
- newobj->sym_code = code;
- code += 1;
- }
-
-}
-
-
-\f
-/*
- * Routine to perform class inheritance and validation.
- *
- * This routine has two major phases:
- * - Complete resolution of class references, and expand out
- * controls list.
- * - Perform inheritance of resources, partitioning them into
- * into arguments and reasons. When complete, the class has
- * a list of all its resources, including copies from a
- * superclass and possibly a parentclass.
- * Excluded resources remain in the list, and are simply marked.
- */
-
-void wmlResolveValidateClass ()
-
-{
-
-int ndx; /* loop index */
-int max; /* maximum code value */
-WmlClassDefPtr clsobj; /* current class object */
-WmlSynClassDefPtr synobj; /* syntactic class object */
-WmlClassDefPtr superobj; /* superclass */
-WmlClassDefPtr parentobj; /* parentclass */
-WmlClassDefPtr widgobj; /* gadget's widget class */
-WmlSynClassCtrlDefPtr refptr; /* current controls reference */
-WmlClassCtrlDefPtr ctrlobj; /* resolved control reference */
-int refndx; /* index in vector */
-WmlClassDefPtr refcls; /* referenced class object */
-WmlCtrlListDefPtr reflist; /* controls list object */
-WmlClassCtrlDefPtr listelem; /* control reference in list */
-char errmsg[300];
-
-
-/*
- * Acquire the superclass pointer for each widget and gadget class
- */
-for ( ndx=0 ; ndx<wml_obj_allclass_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_allclass_ptr->hvec[ndx].objptr;
- synobj = clsobj->syndef;
- if ( synobj->superclass != NULL )
- {
- superobj = (WmlClassDefPtr)
- wmlResolveFindObject (synobj->superclass,
- WmlClassDefValid,
- synobj->name);
- if ( superobj == NULL ) continue;
- clsobj->superclass = superobj;
- }
- }
-
-/*
- * Acquire the parentclass pointer (if one exists),
- * for each widget and gadget class
- */
-for ( ndx=0 ; ndx<wml_obj_allclass_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_allclass_ptr->hvec[ndx].objptr;
- synobj = clsobj->syndef;
- if ( synobj->parentclass != NULL )
- {
- parentobj = (WmlClassDefPtr)
- wmlResolveFindObject (synobj->parentclass,
- WmlClassDefValid,
- synobj->name);
- if ( parentobj == NULL ) continue;
- clsobj->parentclass = parentobj;
- }
- }
-
-/*
- * Link each gadget class with its widget class (both ways).
- * Link any class with a non-dialog version to the non-dialog class.
- */
-for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- synobj = clsobj->syndef;
- if ( synobj->type == WmlClassTypeGadget )
- {
- if ( synobj->widgetclass == NULL )
- {
- sprintf (errmsg, "Gadget class %s has no widgetclass reference",
- synobj->name);
- wmlIssueError (errmsg);
- }
- else
- {
- widgobj = (WmlClassDefPtr)
- wmlResolveFindObject
- (synobj->widgetclass,
- WmlClassDefValid,
- synobj->name);
- if ( widgobj != NULL )
- {
- clsobj->variant = widgobj;
- widgobj->variant = clsobj;
- }
- }
- }
- if ( synobj->dialog == TRUE )
- {
- clsobj->nondialog = clsobj->superclass;
- while ( clsobj->nondialog->syndef->dialog == TRUE )
- clsobj->nondialog = clsobj->nondialog->superclass;
- }
- else
- if ( clsobj->superclass != NULL )
- {
- synobj->dialog = clsobj->superclass->syndef->dialog;
- clsobj->nondialog = clsobj->superclass->nondialog;
- }
- }
-
-/*
- * Construct the list of resolved controls. Control lists are expanded
- * in place.
- */
-for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- synobj = clsobj->syndef;
- for ( refptr=synobj->controls ; refptr!= NULL ; refptr=refptr->next )
- {
- refndx = wmlFindInHList (wml_obj_class_ptr, refptr->name);
- if ( refndx >= 0 )
- {
- refcls = (WmlClassDefPtr) wml_obj_class_ptr->hvec[refndx].objptr;
- ctrlobj = (WmlClassCtrlDefPtr) malloc (sizeof(WmlClassCtrlDef));
- ctrlobj->next = clsobj->controls;
- clsobj->controls = ctrlobj;
- ctrlobj->ctrl = refcls;
- continue;
- }
- refndx = wmlFindInHList (wml_obj_ctrlist_ptr, refptr->name);
- if ( refndx >= 0 )
- {
- reflist = (WmlCtrlListDefPtr)
- wml_obj_ctrlist_ptr->hvec[refndx].objptr;
- for ( listelem=reflist->controls ;
- listelem!=NULL ;
- listelem=listelem->next)
- {
- ctrlobj = (WmlClassCtrlDefPtr)
- malloc (sizeof(WmlClassCtrlDef));
- ctrlobj->next = clsobj->controls;
- clsobj->controls = ctrlobj;
- ctrlobj->ctrl = listelem->ctrl;
- }
- continue;
- }
- wmlIssueReferenceError (synobj->name, refptr->name);
- continue;
- }
- }
-
-/*
- * Perform resource inheritance for each class. This constructs the
- * arguments and reasons reference vectors.
- */
-for ( ndx=0 ; ndx<wml_obj_allclass_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_allclass_ptr->hvec[ndx].objptr;
- wmlResolveClassInherit (clsobj);
- }
-
-}
-
-
-\f
-/*
- * Routine to perform resource inheritance for a class.
- *
- * This routine constructs the argument and reason resource and child reference
- * vectors for a class. It first ensures the superclass (if any) has
- * been inited. It then makes a copy of the superclass lists. It repeats this
- * procedure for the parentclass (if any.) Finally, it
- * merges in the resources from the syntactic object. It uses the
- * resolved resource or child object to point to the matching reference object
- * in the list being created as an aid to search doing overrides. This also
- * detects whether a resource or child is already in the list (if so, it is
- * assumed to be inherited).
- */
-
-void wmlResolveClassInherit (clsobj)
- WmlClassDefPtr clsobj;
-
-{
-
-WmlClassDefPtr superobj; /* superclass object */
-WmlClassDefPtr parentobj; /* parentclass object */
-int ndx; /* loop index */
-WmlResourceDefPtr resobj; /* current resource object */
-WmlClassResDefPtr refobj; /* current resource reference */
-WmlClassResDefPtr srcref; /* source of copy */
-WmlChildDefPtr childobj; /* current child object */
-WmlClassChildDefPtr crefobj; /* current child reference */
-WmlClassChildDefPtr csrcref; /* child source of copy */
-WmlSynClassDefPtr synobj; /* this class' syntactic object */
-WmlSynClassResDefPtr refptr; /* syntactic resource reference */
-WmlSynClassChildDefPtr crefptr; /* syntactic child reference */
-
-
-/*
- * Done if inheritance previously performed. Ensure the superclass is
- * done.
- */
-if ( clsobj == NULL ) return;
-if ( clsobj->inherit_done ) return;
-superobj = clsobj->superclass;
-wmlResolveClassInherit (superobj);
-parentobj = clsobj->parentclass;
-wmlResolveClassInherit (parentobj);
-synobj = clsobj->syndef;
-
-/*
- * Clear the active reference pointer in the resolved resource objects.
- */
-wmlResolveClearRefPointers ();
-
-/*
- * Copy the superclass resources, setting the reference pointer as we go.
- */
-if ( superobj != NULL )
- {
- for ( srcref=superobj->arguments ; srcref!=NULL ; srcref=srcref->next )
- {
- refobj = (WmlClassResDefPtr) malloc (sizeof(WmlClassResDef));
- refobj->next = clsobj->arguments;
- clsobj->arguments = refobj;
- wmlResolveInitRefObj (refobj, srcref);
- }
- for ( srcref=superobj->reasons ; srcref!=NULL ; srcref=srcref->next )
- {
- refobj = (WmlClassResDefPtr) malloc (sizeof(WmlClassResDef));
- refobj->next = clsobj->reasons;
- clsobj->reasons = refobj;
- wmlResolveInitRefObj (refobj, srcref);
- }
- for (csrcref = superobj->children ; csrcref!=NULL ; csrcref=csrcref->next)
- {
- crefobj = (WmlClassChildDefPtr) malloc (sizeof(WmlClassChildDef));
- crefobj->next = clsobj->children;
- clsobj->children = crefobj;
- wmlResolveInitChildRefObj (crefobj, csrcref);
- }
- }
-
-/*
- * Copy the parentclass resources, setting the reference pointer as we go.
- */
-if ( parentobj != NULL )
- {
- for ( srcref=parentobj->arguments ; srcref!=NULL ; srcref=srcref->next )
- {
- if (srcref->act_resource->ref_ptr == NULL)
- {
- refobj = (WmlClassResDefPtr) malloc (sizeof(WmlClassResDef));
- refobj->next = clsobj->arguments;
- clsobj->arguments = refobj;
- wmlResolveInitRefObj (refobj, srcref);
- }
- }
- for ( srcref=parentobj->reasons ; srcref!=NULL ; srcref=srcref->next )
- {
- if (srcref->act_resource->ref_ptr == NULL)
- {
- refobj = (WmlClassResDefPtr) malloc (sizeof(WmlClassResDef));
- refobj->next = clsobj->reasons;
- clsobj->reasons = refobj;
- wmlResolveInitRefObj (refobj, srcref);
- }
- }
- for (csrcref = parentobj->children ; csrcref!=NULL ; csrcref=csrcref->next)
- {
- if (csrcref->act_child->ref_ptr == NULL)
- {
- crefobj = (WmlClassChildDefPtr) malloc (sizeof(WmlClassChildDef));
- crefobj->next = clsobj->children;
- clsobj->children = crefobj;
- wmlResolveInitChildRefObj (crefobj, csrcref);
- }
- }
- }
-
-/*
- * Process the resources belonging to this class. They may either be
- * new resources, or override ones already in the list. Partition them
- * into arguments and reasons.
- */
-for ( refptr=synobj->resources ; refptr!=NULL ; refptr=refptr->next )
- {
- resobj = (WmlResourceDefPtr) wmlResolveFindObject (refptr->name,
- WmlResourceDefValid,
- synobj->name);
- if ( resobj == NULL ) continue;
-
- /*
- * Acquire the resolved resource object, and the resource reference.
- * New references are linked in to the proper list, and have their
- * defaults set.
- */
- if ( resobj->ref_ptr != NULL )
- refobj = resobj->ref_ptr;
- else
- {
- refobj = (WmlClassResDefPtr) malloc (sizeof(WmlClassResDef));
- refobj->act_resource = resobj;
- resobj->ref_ptr = refobj;
- refobj->over_dtype = NULL;
- refobj->dflt = NULL;
- refobj->exclude = WmlAttributeUnspecified;
- if ( resobj->syndef->type == WmlResourceTypeReason )
- {
- refobj->next = clsobj->reasons;
- clsobj->reasons = refobj;
- }
- else
- {
- refobj->next = clsobj->arguments;
- clsobj->arguments = refobj;
- }
- }
-
- /*
- * Override any values in the reference which are explicit in the
- * syntactic reference.
- */
- if ( refptr->type != NULL )
- refobj->over_dtype = (WmlDataTypeDefPtr)
- wmlResolveFindObject (refptr->type,
- WmlDataTypeDefValid,
- synobj->name);
- if ( refptr->dflt != NULL )
- refobj->dflt = refptr->dflt;
- if ( refptr->exclude != WmlAttributeUnspecified )
- refobj->exclude = refptr->exclude;
- }
-
-/*
- * Process the children belonging to this class.
- */
-for ( crefptr = synobj->children ; crefptr!=NULL ; crefptr = crefptr->next )
- {
- childobj = (WmlChildDefPtr) wmlResolveFindObject (crefptr->name,
- WmlChildDefValid,
- synobj->name);
- if ( childobj == NULL ) continue;
-
- /*
- * Acquire the resolved child object, and the child reference.
- * New references are linked in to the proper list, and have their
- * defaults set.
- */
- if ( childobj->ref_ptr != NULL )
- crefobj = childobj->ref_ptr;
- else
- {
- crefobj = (WmlClassChildDefPtr) malloc (sizeof(WmlClassChildDef));
- crefobj->act_child = childobj;
- childobj->ref_ptr = crefobj;
- crefobj->next = clsobj->children;
- clsobj->children = crefobj;
- }
- }
-
-/*
- * inheritance complete
- */
-clsobj->inherit_done = TRUE;
-
-}
-
-
-\f
-/*
- * Routine to copy a resource reference
- */
-
-void wmlResolveInitRefObj (dstobj, srcobj)
- WmlClassResDefPtr dstobj;
- WmlClassResDefPtr srcobj;
-
-{
-
-WmlResourceDefPtr resobj;
-
-
-resobj = srcobj->act_resource;
-dstobj->act_resource = resobj;
-resobj->ref_ptr = dstobj;
-dstobj->over_dtype = srcobj->over_dtype;
-dstobj->dflt = srcobj->dflt;
-dstobj->exclude = srcobj->exclude;
-
-}
-
-\f
-/*
- * Routine to copy a child reference
- */
-
-void wmlResolveInitChildRefObj (dstobj, srcobj)
- WmlClassChildDefPtr dstobj;
- WmlClassChildDefPtr srcobj;
-
-{
-
-WmlChildDefPtr childobj;
-
-childobj = srcobj->act_child;
-dstobj->act_child = childobj;
-childobj->ref_ptr = dstobj;
-
-}
-
-
-\f
-/*
- * Routine to print a report in a file.
- *
- * This routine dumps the developed database into the file 'wml.report'
- */
-
-void wmlResolvePrintReport ()
-
-{
-
-FILE *outfil; /* output file */
-int ndx; /* loop index */
-WmlClassDefPtr clsobj; /* current class */
-
-
-/*
- * Open the output file.
- */
-outfil = fopen ( "wml.report", "w");
-if ( outfil == NULL )
- {
- printf ("\nCouldn't open wml.report");
- return;
- }
-
-/*
- * Go through all classes. Print basic information, then dump their
- * resources. The main purpose of this report is to show the actual
- * resources and controls for the class.
- */
-
-for ( ndx=0 ; ndx<wml_obj_allclass_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_allclass_ptr->hvec[ndx].objptr;
- wmlMarkReferencePointers (clsobj);
- wmlResolvePrintClass (outfil, clsobj);
- }
-
-
-/*
- * close the output file
- */
-fprintf (outfil, "\n\n");
-printf ("\nCreated report file wml.report");
-fclose (outfil);
-
-}
-
-
-\f
-/*
- * Print the information for a class
- */
-
-void wmlResolvePrintClass (outfil, clsobj)
- FILE *outfil;
- WmlClassDefPtr clsobj;
-
-{
-
-int ndx; /* loop index */
-WmlSynClassDefPtr synobj; /* syntactic object */
-WmlClassCtrlDefPtr ctrlref; /* controls reference */
-WmlClassDefPtr ctrlobj; /* current class in control */
-
-
-synobj = clsobj->syndef;
-fprintf (outfil, "\n\n\nClass %s:", synobj->name);
-switch ( synobj->type )
- {
- case WmlClassTypeMetaclass:
- fprintf (outfil, "\n Type: Metaclass\t");
- if ( synobj->superclass != NULL )
- fprintf (outfil, "Superclass: %s\t", synobj->superclass);
- if ( synobj->parentclass != NULL )
- fprintf (outfil, "Parentclass: %s\t", synobj->parentclass);
- break;
- case WmlClassTypeWidget:
- fprintf (outfil, "\n Type: Widget\t");
- if ( synobj->superclass != NULL )
- fprintf (outfil, "Superclass: %s\t", synobj->superclass);
- if ( synobj->parentclass != NULL )
- fprintf (outfil, "Parentclass: %s\t", synobj->parentclass);
- if ( clsobj->variant != NULL )
- fprintf (outfil, "\n Associated gadget class: %s\t",
- clsobj->variant->syndef->name);
- if ( synobj->convfunc != NULL )
- fprintf (outfil, "Convenience function: %s", synobj->convfunc);
- break;
- case WmlClassTypeGadget:
- fprintf (outfil, "\n Type: Gadget\t");
- if ( synobj->superclass != NULL )
- fprintf (outfil, "Superclass: %s\t", synobj->superclass);
- if ( synobj->parentclass != NULL )
- fprintf (outfil, "Parentclass: %s\t", synobj->parentclass);
- if ( clsobj->variant != NULL )
- fprintf (outfil, "\n Associated widget class: %s\t",
- clsobj->variant->syndef->name);
- if ( synobj->convfunc != NULL )
- fprintf (outfil, "Convenience function: %s", synobj->convfunc);
- break;
- }
-
-/*
- * Print associated non-dialog class
- */
-if ( clsobj->nondialog != NULL )
- fprintf (outfil, "\n DialogClass: True\tNon-dialog ancestor: %s\t",
- clsobj->nondialog->syndef->name);
-
-/*
- * Print the arguments valid in the class. First the new resources for the
- * class are printed, then each ancestor's contribution is printed. This
- * is intended to match the way resources are printed in the toolkit manual,
- * so that checking is as easy as possible.
- */
-fprintf (outfil, "\n Arguments:");
-wmlResolvePrintClassArgs (outfil, clsobj);
-
-/*
- * Print the reasons valid in the class
- */
-fprintf (outfil, "\n Reasons:");
-wmlResolvePrintClassReasons (outfil, clsobj);
-
-/*
- * Print the controls valid in the class
- */
-fprintf (outfil, "\n Controls:");
-for ( ndx=0 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- ctrlobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- if ( ctrlobj->ref_ptr == NULL ) continue;
- fprintf (outfil, "\n %s", ctrlobj->syndef->name);
- }
-
-}
-
-
-\f
-/*
- * Routine to print the arguments for a class
- *
- * This routine prints out the currently marked arguments which are
- * present in this class. Each argument which is printed is remarked
- * so that it won't be printed again. This routine first prints the
- * superclass arguments, so that the printing order becomes the top-down
- * inheritance order.
- */
-
-void wmlResolvePrintClassArgs (outfil, clsobj)
- FILE *outfil;
- WmlClassDefPtr clsobj;
-
-{
-
-int prthdr = TRUE; /* print header line */
-int ndx; /* loop index */
-WmlSynClassDefPtr synobj; /* syntactic object */
-WmlClassResDefPtr resref; /* resource reference */
-int constr = FALSE; /* check for constraints */
-WmlResourceDefPtr resobj; /* current resource */
-WmlSynResourceDefPtr synres; /* syntactic resource object */
-
-
-/*
- * Print the superclass arguments
- */
-if ( clsobj->superclass != NULL )
- wmlResolvePrintClassArgs (outfil, clsobj->superclass);
-
-/*
- * Print the parentclass arguments
- */
-if ( clsobj->parentclass != NULL )
- wmlResolvePrintClassArgs (outfil, clsobj->parentclass);
-
-/*
- * Print the arguments for this class. Unmark the reference so it won't
- * be printed again.
- */
-synobj = clsobj->syndef;
-for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- resref = resobj->ref_ptr;
- if ( resref == NULL ) continue;
- if ( wmlResolveResIsMember(resobj,clsobj->arguments) == NULL ) continue;
- synres = resobj->syndef;
- switch ( synres->type )
- {
- case WmlResourceTypeArgument:
- case WmlResourceTypeSubResource:
- break;
- case WmlResourceTypeConstraint:
- constr = TRUE;
- break;
- default:
- continue;
- break;
- }
- if ( prthdr )
- {
- fprintf (outfil, "\n %s argument set:", synobj->name);
- prthdr = FALSE;
- }
-
- fprintf (outfil, "\n %s", synres->name);
- fprintf (outfil, "\n\tType = %s", resobj->dtype_def->syndef->name);
- if ( strcmp(synres->name,synres->resliteral) != 0 )
- fprintf (outfil, "\tResourceLiteral = %s", synres->resliteral);
- switch ( resref->exclude )
- {
- case WmlAttributeTrue:
- fprintf (outfil, "\n\tExclude = True;");
- break;
- case WmlAttributeFalse:
- fprintf (outfil, "\n\tExclude = False;");
- break;
- }
- if ( resref->dflt != NULL )
- fprintf (outfil, "\n\tDefault = \"%s\"", resref->dflt);
- else
- if ( synres->dflt != NULL )
- fprintf (outfil, "\n\tDefault = \"%s\"", synres->dflt);
- resobj->ref_ptr = NULL;
- }
-
-/*
- * Print the constraints valid in the class
- */
-if ( constr )
- {
- prthdr = TRUE;
- for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- resref = resobj->ref_ptr;
- if ( resref == NULL ) continue;
- if ( wmlResolveResIsMember(resobj,clsobj->arguments) == NULL ) continue;
- synres = resobj->syndef;
- switch ( synres->type )
- {
- case WmlResourceTypeConstraint:
- break;
- default:
- continue;
- break;
- }
- if ( prthdr )
- {
- fprintf (outfil, "\n %s constraint set:", synobj->name);
- prthdr = FALSE;
- }
- fprintf (outfil, "\n %s", synres->name);
- if ( strcmp(synres->name,synres->resliteral) != 0 )
- fprintf (outfil, "\tResourceLiteral = %s", synres->resliteral);
- switch ( resref->exclude )
- {
- case WmlAttributeTrue:
- fprintf (outfil, "\n\tExclude = True;");
- break;
- case WmlAttributeFalse:
- fprintf (outfil, "\n\tExclude = False;");
- break;
- }
- if ( resref->dflt != NULL )
- fprintf (outfil, "\n\tDefault = \"%s\"", resref->dflt);
- else
- if ( synres->dflt != NULL )
- fprintf (outfil, "\n\tDefault = \"%s\"", synres->dflt);
- resobj->ref_ptr = NULL;
- }
- }
-
-}
-
-
-\f
-/*
- * Routine to print reasons in a class.
- *
- * Like printing arguments, only reasons instead.
- */
-
-void wmlResolvePrintClassReasons (outfil, clsobj)
- FILE *outfil;
- WmlClassDefPtr clsobj;
-
-{
-
-int prthdr = TRUE; /* print header flag */
-int ndx; /* loop index */
-WmlSynClassDefPtr synobj; /* syntactic object */
-WmlClassResDefPtr resref; /* resource reference */
-WmlResourceDefPtr resobj; /* current resource */
-WmlSynResourceDefPtr synres; /* syntactic resource object */
-
-
-/*
- * Print the superclass reasons
- */
-if ( clsobj->superclass != NULL )
- wmlResolvePrintClassReasons (outfil, clsobj->superclass);
-
-/*
- * Print the parentclass reasons
- */
-if ( clsobj->parentclass != NULL )
- wmlResolvePrintClassReasons (outfil, clsobj->parentclass);
-
-/*
- * Print the reasons for this class. Unmark the reference so it won't
- * be printed again.
- */
-synobj = clsobj->syndef;
-for ( ndx=0 ; ndx<wml_obj_reason_ptr->cnt ; ndx++ )
- {
- resobj = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[ndx].objptr;
- resref = resobj->ref_ptr;
- if ( resref == NULL ) continue;
- if ( wmlResolveResIsMember(resobj,clsobj->reasons) == NULL ) continue;
- synres = resobj->syndef;
- if ( prthdr )
- {
- fprintf (outfil, "\n %s reason set:", synobj->name);
- prthdr = FALSE;
- }
- fprintf (outfil, "\n %s", synres->name);
- if ( strcmp(synres->name,synres->resliteral) != 0 )
- fprintf (outfil, "\tResourceLiteral = %s", synres->resliteral);
- switch ( resref->exclude )
- {
- case WmlAttributeTrue:
- fprintf (outfil, "\n\tExclude = True;");
- break;
- case WmlAttributeFalse:
- fprintf (outfil, "\n\tExclude = False;");
- break;
- }
- resobj->ref_ptr = NULL;
- }
-}
-
-
-\f
-/*
- * Routine to mark reference pointers for a class
- *
- * This routine clears all reference pointers, then marks the class and
- * resource objects to flag those contained in the current class. This
- * allows processing of the widget and resource vectors in order to produce
- * bit masks or reports.
- */
-
-void wmlMarkReferencePointers (clsobj)
- WmlClassDefPtr clsobj;
-
-{
-
-int ndx; /* loop index */
-WmlClassDefPtr mrkcls; /* class object to mark */
-WmlResourceDefPtr mrkres; /* resource object to mark */
-WmlClassResDefPtr resref; /* resource reference */
-WmlClassCtrlDefPtr ctrlref; /* controls reference */
-
-
-/*
- * Clear the reference pointers. Then go through the arguments, reasons,
- * and controls lists, and mark the referenced classes.
- */
-wmlResolveClearRefPointers ();
-for ( resref=clsobj->arguments ; resref!= NULL ; resref=resref->next )
- resref->act_resource->ref_ptr = resref;
-for ( resref=clsobj->reasons ; resref!= NULL ; resref=resref->next )
- resref->act_resource->ref_ptr = resref;
-for ( ctrlref=clsobj->controls ; ctrlref!=NULL ; ctrlref=ctrlref->next )
- ctrlref->ctrl->ref_ptr = ctrlref;
-
-}
-
-
-\f
-/*
- * Routine to clear reference pointers
- */
-
-void wmlResolveClearRefPointers ()
-
-{
-
-int ndx; /* loop index */
-WmlClassDefPtr mrkcls; /* class object to mark */
-WmlResourceDefPtr mrkres; /* resource object to mark */
-WmlChildDefPtr mrkcld; /* child object to mark */
-
-for ( ndx=0 ; ndx<wml_obj_allclass_ptr->cnt ; ndx++ )
- {
- mrkcls = (WmlClassDefPtr) wml_obj_allclass_ptr->hvec[ndx].objptr;
- mrkcls->ref_ptr = NULL;
- }
-for ( ndx=0 ; ndx<wml_obj_reason_ptr->cnt ; ndx++ )
- {
- mrkres = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[ndx].objptr;
- mrkres->ref_ptr = NULL;
- }
-for ( ndx=0 ; ndx<wml_obj_arg_ptr->cnt ; ndx++ )
- {
- mrkres = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr;
- mrkres->ref_ptr = NULL;
- }
-for ( ndx=0 ; ndx<wml_obj_child_ptr->cnt ; ndx++ )
- {
- mrkcld = (WmlChildDefPtr) wml_obj_child_ptr->hvec[ndx].objptr;
- mrkcld->ref_ptr = NULL;
- }
-
-}
-
-
-\f
-/*
- * Routine to find an object for binding. The name is always looked
- * in the syntactic object list, since all references made by the
- * user are in that list (resolved objects may be entered under
- * an internal literal, and not be found). This routine always attempts to
- * return a resolved object (which depends on object type). It also guarantees
- * that the object it finds matches the given type.
- *
- * name the object to be found
- * type type the object should match
- * requester requester name, for error messages
- *
- * Returns: pointer to the object found
- */
-
-ObjectPtr wmlResolveFindObject (name, type, requester)
- char *name;
- int type;
- char *requester;
-
-{
-
-int objndx; /* the object index in the list */
-WmlSynDefPtr synobj; /* syntactic object */
-char errmsg[300];
-
-
-objndx = wmlFindInHList (wml_synobj_ptr, name);
-if ( objndx < 0 )
- {
- wmlIssueReferenceError (requester, name);
- return NULL;
- }
-synobj = (WmlSynDefPtr) wml_synobj_ptr ->hvec[objndx].objptr;
-if ( synobj->validation != type )
- {
- sprintf (errmsg,
- "Object %s references object %s\n\tin a context where a different type of object is required",
- requester, name);
- wmlIssueError (errmsg);
- return NULL;
- }
-switch ( synobj->validation )
- {
- case WmlClassDefValid:
- case WmlResourceDefValid:
- case WmlDataTypeDefValid:
- case WmlCtrlListDefValid:
- case WmlEnumSetDefValid:
- case WmlEnumValueDefValid:
- case WmlChildDefValid:
- return (ObjectPtr) synobj->rslvdef;
- break;
- default:
- return (ObjectPtr) synobj;
- }
-
-}
-
-
-/*
- * Report an object reference error
- *
- * srcname the object making the reference
- * badname the missing object
- */
-
-void wmlIssueReferenceError (srcname, badname)
- char *srcname;
- char *badname;
-
-{
-
-printf ("\nObject %s references undefined object %s", srcname, badname);
-wml_err_count += 1;
-
-}
-
-
-/*
- * Report an attempt to make a reference which is not supported.
- */
-
-void wmlIssueIllegalReferenceError (srcname, badname)
- char *srcname;
- char *badname;
-
-{
-
-printf ("\nObject %s cannot reference a %s object", srcname, badname);
-wml_err_count += 1;
-
-}
-
-
-/*
- * Report an error string.
- */
-void wmlIssueError (errstg)
- char *errstg;
-
-{
-
-printf ("\n%s", errstg);
-wml_err_count += 1;
-
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: wmlsynbld.c /main/9 1995/08/29 11:11:12 drk $"
-#endif
-#endif
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
- * This module contains the programs which construct the syntactic
- * representation of the WML input. All the routines are called as
- * actions of the grammar productions.
- *
- * Since WML is so simple, no stack frame technology is used. Instead,
- * context is maintained by global pointers and vectors which contain
- * the intermediate results of parsing a statement. At most, these
- * contain an object being constructed (for instance a class descriptor)
- * and a subobject (for instance a resource reference in a class).
- *
- * Results are communicated back using the global error count
- * wml_err_count, and the ordered handle list wml_synobj_ptr.
- */
-
-
-#include "wml.h"
-#include "wmlparse.h"
-
-#if defined(__STDC__)
-#include <stdlib.h>
-#endif
-#include <stdio.h>
-
-\f
-/*
- * Globals used during WML parsing.
- */
-
-/*
- * Character arrays and other variables to hold lexemes
- * are defined in wmllex.l
- */
-
-/*
- * Current principal object being constructed
- * Current subobject
- */
-ObjectPtr wml_cur_obj;
-ObjectPtr wml_cur_subobj;
-
-
-\f
-/*
- * Routine to create a class descriptor. The result is placed in both
- * wml_cur_obj and wml_synobj.
- *
- * name the class name
- * ctype class type, one of METACLASS | WIDGET | GADGET
- */
-
-void wmlCreateClass (name, ctype)
- char *name;
- int ctype;
-
-{
-
-WmlSynClassDefPtr cdesc; /* new class descriptor */
-
-
-/*
- * Initialize the new class descriptor. Enter it in the object list.
- * Set the current object global to the descriptor.
- */
-cdesc = (WmlSynClassDefPtr) malloc (sizeof(WmlSynClassDef));
-cdesc->validation = WmlClassDefValid;
-cdesc->rslvdef = NULL;
-switch ( ctype )
- {
- case METACLASS:
- cdesc->type = WmlClassTypeMetaclass;
- break;
- case WIDGET:
- cdesc->type = WmlClassTypeWidget;
- break;
- case GADGET:
- cdesc->type = WmlClassTypeGadget;
- break;
- default:
- printf ("\nwmlCreateClass: unknown class type %d", ctype);
- return;
- break;
- }
-cdesc->dialog = FALSE;
-cdesc->name = wmlAllocateString (name);
-cdesc->superclass = NULL;
-cdesc->parentclass = NULL;
-cdesc->widgetclass = NULL;
-cdesc->int_lit = NULL;
-cdesc->convfunc = NULL;
-cdesc->docname = NULL;
-cdesc->ctrlmapto = NULL;
-cdesc->controls = NULL;
-cdesc->resources = NULL;
-cdesc->children = NULL;
-
-if ( wmlFindInHList(wml_synobj_ptr,name) >= 0 )
- {
- printf ("\nDuplicate name %s found", name);
- return;
- }
-wmlInsertInHList (wml_synobj_ptr, name, (ObjectPtr)cdesc);
-wml_cur_obj = (ObjectPtr) cdesc;
-wml_cur_subobj = NULL;
-
-return;
-
-}
-
-
-\f
-/*
- * Routine to create a resource descriptor. The result is placed in both
- * wml_cur_obj and wml_synobj.
- *
- * name the resource name
- * rtype resource type, one of
- * ARGUMENT | REASON | CONSTRAINT | SUBRESOURCE
- */
-
-void wmlCreateResource (name, rtype)
- char *name;
- int rtype;
-
-{
-
-WmlSynResourceDefPtr rdesc; /* new resource descriptor */
-
-
-/*
- * Initialize the new resource descriptor. Enter it in the object list.
- * Set the current object global to the descriptor.
- */
-rdesc = (WmlSynResourceDefPtr) malloc (sizeof(WmlSynResourceDef));
-rdesc->validation = WmlResourceDefValid;
-rdesc->rslvdef = NULL;
-switch ( rtype )
- {
- case ARGUMENT:
- rdesc->type = WmlResourceTypeArgument;
- rdesc->xrm_support = WmlAttributeTrue;
- break;
- case REASON:
- rdesc->type = WmlResourceTypeReason;
- rdesc->xrm_support = WmlAttributeFalse;
- break;
- case CONSTRAINT:
- rdesc->type = WmlResourceTypeConstraint;
- rdesc->xrm_support = WmlAttributeTrue;
- break;
- case SUBRESOURCE:
- rdesc->type = WmlResourceTypeSubResource;
- rdesc->xrm_support = WmlAttributeTrue;
- break;
- default:
- printf ("\nwmlCreateResource: unknown resource type %d", rtype);
- return;
- break;
- }
-rdesc->name = wmlAllocateString (name);
-rdesc->datatype = NULL;
-rdesc->int_lit = NULL;
-rdesc->resliteral = wmlAllocateString (name); /* default to name */
-rdesc->enumset = NULL;
-rdesc->docname = NULL;
-rdesc->related = NULL;
-rdesc->dflt = NULL;
-rdesc->alias_cnt = 0;
-rdesc->alias_list = NULL;
-
-if ( wmlFindInHList(wml_synobj_ptr,name) >= 0 )
- {
- printf ("\nDuplicate name %s found", name);
- return;
- }
-wmlInsertInHList (wml_synobj_ptr, name, (ObjectPtr)rdesc);
-wml_cur_obj = (ObjectPtr) rdesc;
-wml_cur_subobj = NULL;
-
-return;
-
-}
-
-
-\f
-/*
- * Routine to create a datatype descriptor. The result is placed in both
- * wml_cur_obj and wml_synobj.
- *
- * name the datatype name
- */
-
-void wmlCreateDatatype (name)
- char *name;
-
-{
-
-WmlSynDataTypeDefPtr ddesc; /* new datatype descriptor */
-
-
-/*
- * Initialize the new datatype descriptor. Enter it in the object list.
- * Set the current object global to the descriptor.
- */
-ddesc = (WmlSynDataTypeDefPtr) malloc (sizeof(WmlSynDataTypeDef));
-ddesc->validation = WmlDataTypeDefValid;
-ddesc->rslvdef = NULL;
-ddesc->name = wmlAllocateString (name);
-ddesc->int_lit = NULL;
-ddesc->docname = NULL;
-ddesc->xrm_support = WmlAttributeTrue;
-
-if ( wmlFindInHList(wml_synobj_ptr,name) >= 0 )
- {
- printf ("\nDuplicate name %s found", name);
- return;
- }
-wmlInsertInHList (wml_synobj_ptr, name, (ObjectPtr)ddesc);
-wml_cur_obj = (ObjectPtr) ddesc;
-wml_cur_subobj = NULL;
-
-return;
-
-}
-
-\f
-/*
- * Routine to create a child descriptor. The result is placed in both
- * wml_cur_obj and wml_synobj.
- *
- * name the child name
- * class the class name
- */
-
-void wmlCreateChild (name, class)
- char *name;
- char *class;
-{
-
-WmlSynChildDefPtr chdesc; /* new child descriptor */
-
-
-/*
- * Initialize the new child descriptor. Enter it in the object list.
- * Set the current object global to the descriptor.
- */
-chdesc = (WmlSynChildDefPtr) malloc (sizeof(WmlSynChildDef));
-chdesc->validation = WmlChildDefValid;
-chdesc->rslvdef = NULL;
-chdesc->name = wmlAllocateString (name);
-chdesc->class = wmlAllocateString (class);
-
-if ( wmlFindInHList(wml_synobj_ptr,name) >= 0 )
- {
- printf ("\nDuplicate name %s found", name);
- return;
- }
-wmlInsertInHList (wml_synobj_ptr, name, (ObjectPtr)chdesc);
-wml_cur_obj = (ObjectPtr) chdesc;
-wml_cur_subobj = NULL;
-
-return;
-
-}
-
-
-\f
-/*
- * Routine to create a controls list descriptor. The result is placed in both
- * wml_cur_obj and wml_synobj.
- *
- * name the controls list name
- */
-
-void wmlCreateOrAppendCtrlList (name)
- char *name;
-
-{
-int idx;
-WmlSynCtrlListDefPtr cdesc; /* new CtrlList descriptor */
-
-idx = wmlFindInHList(wml_synobj_ptr,name);
-
-if (idx < 0 ) {
- /* Didn't find list */
-
- /*
- * Initialize the new CtrlList descriptor. Enter it in the object list.
- * Set the current object global to the descriptor.
- */
- cdesc = (WmlSynCtrlListDefPtr) malloc (sizeof(WmlSynCtrlListDef));
- cdesc->validation = WmlCtrlListDefValid;
- cdesc->rslvdef = NULL;
- cdesc->name = wmlAllocateString (name);
- cdesc->controls = NULL;
-
- wmlInsertInHList (wml_synobj_ptr, name, (ObjectPtr)cdesc);
-} else {
- cdesc = (WmlSynCtrlListDefPtr) wml_synobj_ptr -> hvec[idx].objptr;
- printf ("\nAppending to list name %s", name);
-}
-
-wml_cur_obj = (ObjectPtr) cdesc;
-wml_cur_subobj = NULL;
-
-return;
-
-}
-
-
-\f
-/*
- * Routine to create an enumeration set descriptor. The result is placed in both
- * wml_cur_obj and wml_synobj.
- *
- * name the enumeration set name
- * type data type, must match a data type name
- */
-
-void wmlCreateEnumSet (name, dtype)
- char *name;
- char *dtype;
-
-{
-
-WmlSynEnumSetDefPtr esdesc; /* new enumeration set descriptor */
-
-
-/*
- * Initialize the new resource descriptor. Enter it in the object list.
- * Set the current object global to the descriptor.
- */
-esdesc = (WmlSynEnumSetDefPtr) malloc (sizeof(WmlSynEnumSetDef));
-esdesc->validation = WmlEnumSetDefValid;
-esdesc->rslvdef = NULL;
-esdesc->name = wmlAllocateString (name);
-esdesc->datatype = wmlAllocateString (dtype);
-esdesc->values = NULL;
-
-if ( wmlFindInHList(wml_synobj_ptr,name) >= 0 )
- {
- printf ("\nDuplicate name %s found", name);
- return;
- }
-wmlInsertInHList (wml_synobj_ptr, name, (ObjectPtr)esdesc);
-wml_cur_obj = (ObjectPtr) esdesc;
-wml_cur_subobj = NULL;
-
-return;
-
-}
-
-
-\f
-/*
- * Routine to create an enumeration value descriptor. The result is placed in both
- * wml_cur_obj and wml_synobj.
- *
- * name the enumeration value name
- */
-
-void wmlCreateEnumValue (name)
- char *name;
-
-{
-
-WmlSynEnumValueDefPtr evdesc; /* new enumeration value descriptor */
-
-
-/*
- * Initialize the new resource descriptor. Enter it in the object list.
- * Set the current object global to the descriptor.
- */
-evdesc = (WmlSynEnumValueDefPtr) malloc (sizeof(WmlSynEnumValueDef));
-evdesc->validation = WmlEnumValueDefValid;
-evdesc->rslvdef = NULL;
-evdesc->name = wmlAllocateString (name);
-evdesc->enumlit = wmlAllocateString (name); /* defaults to name */
-
-if ( wmlFindInHList(wml_synobj_ptr,name) >= 0 )
- {
- printf ("\nDuplicate name %s found", name);
- return;
- }
-wmlInsertInHList (wml_synobj_ptr, name, (ObjectPtr)evdesc);
-wml_cur_obj = (ObjectPtr) evdesc;
-wml_cur_subobj = NULL;
-
-return;
-
-}
-
-
-\f
-/*
- * Routine to create a charset descriptor. The result is placed in both
- * wml_cur_obj and wml_synobj.
- *
- * name the charset name
- */
-
-void wmlCreateCharset (name)
- char *name;
-
-{
-
-WmlSynCharSetDefPtr ddesc; /* new charset descriptor */
-
-
-/*
- * Initialize the new charset descriptor. Enter it in the object list.
- * Set the current object global to the descriptor.
- */
-ddesc = (WmlSynCharSetDefPtr) malloc (sizeof(WmlSynCharSetDef));
-ddesc->validation = WmlCharSetDefValid;
-ddesc->rslvdef = NULL;
-ddesc->name = wmlAllocateString (name);
-ddesc->int_lit = NULL;
-ddesc->xms_name = NULL;
-ddesc->direction = WmlCharSetDirectionLtoR;
-ddesc->parsedirection = WmlAttributeUnspecified;
-ddesc->charsize = WmlCharSizeOneByte;
-ddesc->alias_cnt = 0;
-ddesc->alias_list = NULL;
-
-if ( wmlFindInHList(wml_synobj_ptr,name) >= 0 )
- {
- printf ("\nDuplicate name %s found", name);
- return;
- }
-wmlInsertInHList (wml_synobj_ptr, name, (ObjectPtr)ddesc);
-wml_cur_obj = (ObjectPtr) ddesc;
-wml_cur_subobj = NULL;
-
-return;
-
-}
-
-
-\f
-/*
- * Routine to set an attribute in a class descriptor.
- *
- * This routine sets the given attribute in the current object, which
- * must be a class descriptor. The current object and subobject do not
- * change.
- *
- * attrid oneof SUPERCLASS | INTERNALLITERAL | DOCNAME |
- * CONVFUNC | WIDGETCLASS | DIALOGCLASS |
- * CTRLMAPSRESOURCE
- * val value of the attribute, usually a string
- */
-
-void wmlAddClassAttribute (attrid, val)
- int attrid;
- char *val;
-
-{
-
-WmlSynClassDefPtr cdesc; /* the class descriptor */
-
-
-/*
- * Acquire the current class descriptor
- */
-if ( wml_cur_obj == NULL )
- {
- printf ("\nwmlAddClassAttribute: NULL current object");
- return;
- }
-cdesc = (WmlSynClassDefPtr) wml_cur_obj;
-if ( cdesc->validation != WmlClassDefValid )
- {
- printf ("\nwmlAddClassAttribute: %d not a class descriptor",
- cdesc->validation);
- return;
- }
-
-/*
- * Set the appropriate resource
- */
-switch ( attrid )
- {
- case SUPERCLASS:
- cdesc->superclass = wmlAllocateString (val);
- break;
- case PARENTCLASS:
- cdesc->parentclass = wmlAllocateString (val);
- break;
- case INTERNALLITERAL:
- cdesc->int_lit = wmlAllocateString (val);
- break;
- case CONVFUNC:
- cdesc->convfunc = wmlAllocateString (val);
- break;
- case DOCNAME:
- cdesc->docname = wmlAllocateString (val);
- break;
- case WIDGETCLASS:
- cdesc->widgetclass = wmlAllocateString (val);
- break;
- case DIALOGCLASS:
- switch ( (long)val )
- {
- case ATTRTRUE:
- cdesc->dialog = TRUE;
- break;
- }
- break;
- case CTRLMAPSRESOURCE:
- cdesc->ctrlmapto = wmlAllocateString (val);
- break;
- }
-
-return;
-}
-
-
-\f
-/*
- * Routine to add a control specification to the current class.
- * The current object must be a class descriptor. The entry name
- * is added to the controls list. The control specification becomes the
- * current subobject.
- *
- * name the name of the controlled class
- */
-
-void wmlAddClassControl (name)
- char *name;
-
-{
-
-WmlSynClassDefPtr cdesc; /* the class descriptor */
-WmlSynClassCtrlDefPtr ctrlelm; /* controls element */
-
-
-/*
- * Acquire the current class descriptor
- */
-if ( wml_cur_obj == NULL )
- {
- printf ("\nwmlAddClassControl: NULL current object");
- return;
- }
-cdesc = (WmlSynClassDefPtr) wml_cur_obj;
-if ( cdesc->validation != WmlClassDefValid )
- {
- printf ("\nwmlAddClassControl: %d not a class descriptor",
- cdesc->validation);
- return;
- }
-
-/*
- * Add the control to the control list
- */
-ctrlelm = (WmlSynClassCtrlDefPtr) malloc (sizeof(WmlSynClassCtrlDef));
-ctrlelm->validation = WmlClassCtrlDefValid;
-ctrlelm->next = cdesc->controls;
-cdesc->controls = ctrlelm;
-ctrlelm->name = wmlAllocateString (name);
-
-/*
- * This becomes the current subobject
- */
-wml_cur_subobj = (ObjectPtr) ctrlelm;
-
-return;
-
-}
-
-
-\f
-/*
- * Add a resource descriptor to a class.
- * The current object must be a class descriptor. Create and add a
- * resource descriptor, which becomes the current subobject. It is not
- * entered in the named object list.
- *
- * name the resource name
- */
-
-void wmlAddClassResource (name)
- char *name;
-
-{
-
-WmlSynClassDefPtr cdesc; /* the class descriptor */
-WmlSynClassResDefPtr rdesc; /* the resource reference descriptor */
-
-
-/*
- * Acquire the current class descriptor
- */
-if ( wml_cur_obj == NULL )
- {
- printf ("\nwmlAddClassResource: NULL current object");
- return;
- }
-cdesc = (WmlSynClassDefPtr) wml_cur_obj;
-if ( cdesc->validation != WmlClassDefValid )
- {
- printf ("\nwmlAddClassResource: %d not a class descriptor",
- cdesc->validation);
- return;
- }
-
-/*
- * Add the resource to the resource list
- */
-rdesc = (WmlSynClassResDefPtr) malloc (sizeof(WmlSynClassResDef));
-rdesc->validation = WmlClassResDefValid;
-rdesc->name = wmlAllocateString (name);
-rdesc->type = NULL;
-rdesc->dflt = NULL;
-rdesc->exclude = WmlAttributeUnspecified;
-
-rdesc->next = cdesc->resources;
-cdesc->resources = rdesc;
-
-/*
- * This becomes the current subobject
- */
-wml_cur_subobj = (ObjectPtr) rdesc;
-
-return;
-
-}
-
-\f
-/*
- * Add a child descriptor to a class.
- * The current object must be a class descriptor. Create and add a
- * child descriptor, which becomes the current subobject. It is not
- * entered in the named object list.
- *
- * name the resource name
- */
-
-void wmlAddClassChild (name)
- char *name;
-
-{
-
-WmlSynClassDefPtr cdesc; /* the class descriptor */
-WmlSynClassChildDefPtr chdesc; /* the child reference descriptor */
-
-
-/*
- * Acquire the current class descriptor
- */
-if ( wml_cur_obj == NULL )
- {
- printf ("\nwmlAddClassResource: NULL current object");
- return;
- }
-cdesc = (WmlSynClassDefPtr) wml_cur_obj;
-if ( cdesc->validation != WmlClassDefValid )
- {
- printf ("\nwmlAddClassResource: %d not a class descriptor",
- cdesc->validation);
- return;
- }
-
-/*
- * Add the child to the child list
- */
-chdesc = (WmlSynClassChildDefPtr) malloc (sizeof(WmlSynClassChildDef));
-chdesc->validation = WmlClassChildDefValid;
-chdesc->name = wmlAllocateString (name);
-
-chdesc->next = cdesc->children;
-cdesc->children = chdesc;
-
-/*
- * This becomes the current subobject
- */
-wml_cur_subobj = (ObjectPtr) chdesc;
-
-return;
-
-}
-
-
-\f
-/*
- * This routine sets an attribute in the current class resource descriptor.
- * The current subobject must be a class resource descriptor. The
- * named attribute is set.
- *
- * attrid one of TYPE | DEFAULT | EXCLUDE
- * val attribute value, usually a string. Must be
- * ATTRTRUE | ATTRFALSE for EXCLUDE.
- */
-void wmlAddClassResourceAttribute (attrid, val)
- int attrid;
- char *val;
-
-{
-
-WmlSynClassResDefPtr rdesc; /* current class resource descriptor */
-long excval; /* EXCLUDE value */
-
-
-/*
- * Acquire the descriptor from the current subobject.
- */
-if ( wml_cur_subobj == NULL )
- {
- printf ("\nwmlAddClassResourceAttribute: NULL current subobject");
- return;
- }
-rdesc = (WmlSynClassResDefPtr) wml_cur_subobj;
-if ( rdesc->validation != WmlClassResDefValid )
- {
- printf
- ("\nwmlAddClassResourceAttribute: %d not a class resource descriptor",
- rdesc->validation);
- return;
- }
-
-switch ( attrid )
- {
- case TYPE:
- rdesc->type = wmlAllocateString (val);
- break;
- case DEFAULT:
- rdesc->dflt = wmlAllocateString (val);
- break;
- case EXCLUDE:
- excval = (long) val;
- switch ( excval )
- {
- case ATTRTRUE:
- rdesc->exclude = WmlAttributeTrue;
- break;
- case ATTRFALSE:
- rdesc->exclude = WmlAttributeFalse;
- break;
- default:
- printf ("\nwmlAddClassResourceAttribute: bad EXCLUDE value %d",
- excval);
- return;
- break;
- }
- break;
- default:
- printf ("\nwmlAddClassResourceAttribute: unknown attrid %d", attrid);
- return;
- break;
- }
-
-return;
-
-}
-
-
-
-\f
-/*
- * Routine to set an attribute in a resource descriptor.
- *
- * This routine sets the given attribute in the current object, which
- * must be a resource descriptor. The current object and subobject do not
- * change.
- *
- * attrid oneof TYPE | RESOURCELITERAL | INTERNALLITERAL |
- * RELATED | DOCNAME | DEFAULT | XRMRESOURCE | ALIAS |
- * ENUMERATIONSET
- * val value of the attribute, usually a string
- */
-
-void wmlAddResourceAttribute (attrid, val)
- int attrid;
- char *val;
-
-{
-
-WmlSynResourceDefPtr rdesc; /* the resource descriptor */
-long xrmval; /* XRMRESOURCE value */
-char **synlist; /* ALIAS pointer list */
-
-
-/*
- * Acquire the current resource descriptor
- */
-if ( wml_cur_obj == NULL )
- {
- printf ("\nwmlAddResourceAttribute: NULL current object");
- return;
- }
-rdesc = (WmlSynResourceDefPtr) wml_cur_obj;
-if ( rdesc->validation != WmlResourceDefValid )
- {
- printf ("\nwmlAddResourceAttribute: %d not a resource descriptor",
- rdesc->validation);
- return;
- }
-
-/*
- * Set the appropriate resource
- */
-switch ( attrid )
- {
- case TYPE:
- rdesc->datatype = wmlAllocateString (val);
- break;
- case INTERNALLITERAL:
- rdesc->int_lit = wmlAllocateString (val);
- break;
- case RESOURCELITERAL:
- rdesc->resliteral = wmlAllocateString (val);
- break;
- case ENUMERATIONSET:
- rdesc->enumset = wmlAllocateString (val);
- break;
- case DOCNAME:
- rdesc->docname = wmlAllocateString (val);
- break;
- case RELATED:
- rdesc->related = wmlAllocateString (val);
- break;
- case DEFAULT:
- rdesc->dflt = wmlAllocateString (val);
- break;
- case XRMRESOURCE:
- xrmval = (long) val;
- switch ( xrmval )
- {
- case ATTRTRUE:
- rdesc->xrm_support = WmlAttributeTrue;
- break;
- case ATTRFALSE:
- rdesc->xrm_support = WmlAttributeFalse;
- break;
- default:
- printf
- ("\nwmlAddResourceAttribute: bad XRMRESOURCE value %d",
- xrmval);
- return;
- break;
- }
- break;
- case ALIAS:
- if ( rdesc->alias_cnt == 0 )
- synlist = (char **) malloc (sizeof(char *));
- else
- synlist = (char **)
- realloc (rdesc->alias_list,
- (rdesc->alias_cnt+1)*sizeof(char **));
- synlist[rdesc->alias_cnt] = wmlAllocateString (val);
- rdesc->alias_cnt += 1;
- rdesc->alias_list = synlist;
- break;
- default:
- printf ("\nwmlAddResourceAttribute: unknown attrid %d", attrid);
- return;
- break;
- }
-
-return;
-}
-
-
-\f
-/*
- * Routine to set an attribute in a datatype descriptor.
- *
- * This routine sets the given attribute in the current object, which
- * must be a datatype descriptor. The current object and subobject do not
- * change.
- *
- * attrid oneof INTERNALLITERAL | DOCNAME | XRMRESOURCE
- * val value of the attribute, usually a string
- */
-
-void wmlAddDatatypeAttribute (attrid, val)
- int attrid;
- char *val;
-
-{
-
-WmlSynDataTypeDefPtr ddesc; /* the datatype descriptor */
-long xrmval; /* XRMRESOURCE value */
-
-
-/*
- * Acquire the current datatype descriptor
- */
-if ( wml_cur_obj == NULL )
- {
- printf ("\nwmlAddDatatypeAttribute: NULL current object");
- return;
- }
-ddesc = (WmlSynDataTypeDefPtr) wml_cur_obj;
-if ( ddesc->validation != WmlDataTypeDefValid )
- {
- printf ("\nwmlAddDatatypeAttribute: %d not a datatype descriptor",
- ddesc->validation);
- return;
- }
-
-/*
- * Set the appropriate slot
- */
-switch ( attrid )
- {
- case INTERNALLITERAL:
- ddesc->int_lit = wmlAllocateString (val);
- break;
- case DOCNAME:
- ddesc->docname = wmlAllocateString (val);
- break;
- case XRMRESOURCE:
- xrmval = (long) val;
- switch ( xrmval )
- {
- case ATTRTRUE:
- ddesc->xrm_support = WmlAttributeTrue;
- break;
- case ATTRFALSE:
- ddesc->xrm_support = WmlAttributeFalse;
- break;
- default:
- printf
- ("\nwmlAddDatatypeAttribute: bad XRMRESOURCE value %d",
- xrmval);
- return;
- break;
- }
- break;
- default:
- printf ("\nwmlAddDatatypeAttribute: unknown attrid %d", attrid);
- return;
- break;
- }
-
-return;
-}
-
-
-\f
-/*
- * Routine to add a control specification to the current controls list.
- * The current object must be a controls list descriptor. The entry name
- * is added to the controls list. The new element becomes the current
- * subobject.
- *
- * name the name of the controlled class
- */
-
-void wmlAddCtrlListControl (name)
- char *name;
-
-{
-
-WmlSynCtrlListDefPtr cdesc; /* the controls list descriptor */
-WmlSynClassCtrlDefPtr ctrlelm; /* controls element */
-
-
-/*
- * Acquire the current controls list descriptor
- */
-if ( wml_cur_obj == NULL )
- {
- printf ("\nwmlAddCtrlListControl: NULL current object");
- return;
- }
-cdesc = (WmlSynCtrlListDefPtr) wml_cur_obj;
-if ( cdesc->validation != WmlCtrlListDefValid )
- {
- printf ("\nwmlAddCtrlListControl: %d not a controls list descriptor",
- cdesc->validation);
- return;
- }
-
-/*
- * Add the control to the control list
- */
-ctrlelm = (WmlSynClassCtrlDefPtr) malloc (sizeof(WmlSynClassCtrlDef));
-ctrlelm->validation = WmlClassCtrlDefValid;
-ctrlelm->next = cdesc->controls;
-cdesc->controls = ctrlelm;
-ctrlelm->name = wmlAllocateString (name);
-
-/*
- * This becomes the current subobject
- */
-wml_cur_subobj = (ObjectPtr) ctrlelm;
-
-return;
-
-}
-
-
-\f
-/*
- * Routine to add an enumeration value to the current enumeration set
- * The current object must be an enumeration set descriptor. The entry name
- * is added to the the enumeration value list.
- *
- * name the name of the enumeration value
- */
-void wmlAddEnumSetValue (name)
- char *name;
-
-{
-
-WmlSynEnumSetDefPtr esdesc; /* the enumeration set descriptor */
-WmlSynEnumSetValDefPtr evelm; /* EnumSet EnumValue element */
-
-/*
- * Acquire the current enumeration set descriptor
- */
-if ( wml_cur_obj == NULL )
- {
- printf ("\nwmlAddEnumSetValue: NULL current object");
- return;
- }
-esdesc = (WmlSynEnumSetDefPtr) wml_cur_obj;
-if ( esdesc->validation != WmlEnumSetDefValid )
- {
- printf ("\nwmlAddEnumSetValue: %d not an enumeration set descriptor",
- esdesc->validation);
- return;
- }
-
-/*
- * Add the value to the set
- */
-evelm = (WmlSynEnumSetValDefPtr) malloc (sizeof(WmlSynEnumSetValDef));
-evelm->validation = WmlEnumValueDefValid;
-evelm->next = esdesc->values;
-esdesc->values = evelm;
-evelm->name = wmlAllocateString (name);
-
-/*
- * Becomes current subobject
- */
-wml_cur_subobj = (ObjectPtr) evelm;
-
-}
-
-
-\f
-/*
- * Routine to set an attribute in an enumeration value
- *
- * This routine sets the given attribute in the current object, which must
- * be an enumeration value descriptor. The current object does not change.
- *
- * attrid oneof ENUMLITERAL
- * val value of the attribute, usually a string
- */
-void wmlAddEnumValueAttribute (attrid, val)
- int attrid;
- char *val;
-
-{
-
-WmlSynEnumValueDefPtr evdesc; /* the enumeration value descriptor */
-
-
-/*
- * Acquire the current enumeration value descriptor
- */
-if ( wml_cur_obj == NULL )
- {
- printf ("\nwmlAddEnumValueAttribute: NULL current object");
- return;
- }
-evdesc = (WmlSynEnumValueDefPtr) wml_cur_obj;
-if ( evdesc->validation != WmlEnumValueDefValid )
- {
- printf ("\nwmlAddEnumValueAttribute: %d not an enumeration value descriptor",
- evdesc->validation);
- return;
- }
-
-/*
- * Set the appropriate slot
- */
-switch ( attrid )
- {
- case ENUMLITERAL:
- evdesc->enumlit = wmlAllocateString (val);
- break;
- default:
- printf ("\nwmlAddEnumValueAttribute: unknown attrid %d", attrid);
- return;
- break;
- }
-
-return;
-
-}
-
-
-\f
-/*
- * Routine to set an attribute in a charset descriptor.
- *
- * This routine sets the given attribute in the current object, which
- * must be a charset descriptor. The current object and subobject do not
- * change.
- *
- * attrid oneof INTERNALLITERAL | ALIAS | XMSTRINGCHARSETNAME |
- * DIRECTION | PARSEDIRECTION | CHARACTERSIZE
- * val value of the attribute, usually a string
- */
-
-void wmlAddCharsetAttribute (attrid, val)
- int attrid;
- char *val;
-
-{
-
-WmlSynCharSetDefPtr ddesc; /* the charset descriptor */
-char **synlist; /* ALIAS pointer list */
-long atrval; /* attribute value */
-
-
-/*
- * Acquire the current charset descriptor
- */
-if ( wml_cur_obj == NULL )
- {
- printf ("\nwmlAddCharSetAttribute: NULL current object");
- return;
- }
-ddesc = (WmlSynCharSetDefPtr) wml_cur_obj;
-if ( ddesc->validation != WmlCharSetDefValid )
- {
- printf ("\nwmlAddCharsetAttribute: %d not a CharSet descriptor",
- ddesc->validation);
- return;
- }
-
-/*
- * Set the appropriate slot
- */
-switch ( attrid )
- {
- case INTERNALLITERAL:
- ddesc->int_lit = wmlAllocateString (val);
- break;
- case ALIAS:
- if ( ddesc->alias_cnt == 0 )
- synlist = (char **) malloc (sizeof(char *));
- else
- synlist = (char **)
- realloc (ddesc->alias_list,
- (ddesc->alias_cnt+1)*sizeof(char **));
- synlist[ddesc->alias_cnt] = wmlAllocateString (val);
- ddesc->alias_cnt += 1;
- ddesc->alias_list = synlist;
- break;
- case XMSTRINGCHARSETNAME:
- ddesc->xms_name = wmlAllocateString (val);
- break;
- case DIRECTION:
- atrval = (long) val;
- switch ( atrval )
- {
- case LEFTTORIGHT:
- ddesc->direction = WmlCharSetDirectionLtoR;
- break;
- case RIGHTTOLEFT:
- ddesc->direction = WmlCharSetDirectionRtoL;
- break;
- default:
- printf
- ("\nwmlAddCharsetAttribute: bad DIRECTION value %d",
- atrval);
- return;
- break;
- }
- break;
- case PARSEDIRECTION:
- atrval = (long) val;
- switch ( atrval )
- {
- case LEFTTORIGHT:
- ddesc->parsedirection = WmlCharSetDirectionLtoR;
- break;
- case RIGHTTOLEFT:
- ddesc->parsedirection = WmlCharSetDirectionRtoL;
- break;
- default:
- printf
- ("\nwmlAddCharsetAttribute: bad PARSEDIRECTION value %d",
- atrval);
- return;
- break;
- }
- break;
- case CHARACTERSIZE:
- atrval = (long) val;
- switch ( atrval )
- {
- case ONEBYTE:
- ddesc->charsize = WmlCharSizeOneByte;
- break;
- case TWOBYTE:
- ddesc->charsize = WmlCharSizeTwoByte;
- break;
- case MIXED1_2BYTE:
- ddesc->charsize = WmlCharSizeMixed1_2Byte;
- break;
- default:
- printf
- ("\nwmlAddCharsetAttribute: bad CHARACTERSIZE value %d",
- atrval);
- return;
- break;
- }
- break;
- default:
- printf ("\nwmlAddCharsetAttribute: unknown attrid %d", attrid);
- return;
- break;
- }
-
-return;
-}
-
-
-\f
-/*
- * The error reporting routine.
- *
- * For now, issue a very simple error message
- */
-
-void LexIssueError (tkn)
- int tkn;
-
-{
-
-switch ( tkn )
- {
- case SEMICOLON:
- printf ("\n Syntax error: expected a semicolon");
- break;
- case RBRACE:
- printf ("\n Syntax error: expected a right brace");
- break;
- case 0:
- printf ("\nSyntax error: Couldn't recognize a section name, probably fatal");
- break;
- }
-printf ("\n\tnear name='%s', value='%s', line %d",
- yynameval, yystringval, wml_line_count);
-
-wml_err_count += 1;
-
-return;
-
-}
+++ /dev/null
-%{
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
- */
-/*
- * HISTORY
- */
-
-#if defined(__STDC__)
-#include <string.h>
-#endif
-
-#ifndef XmConst
-#if (defined(__STDC__) && __STDC__) || !defined( NO_CONST )
-#define XmConst const
-#else
-#define XmConst
-#endif /* __STDC__ */
-#endif /* XmConst */
-
- /*
- * lex program to construct token data for WML to generate token
- * table data.
- *
- * stdin is the file Uil.y
- *
- * it is searched for each occurance of a line starting with '%token'
- * when found various fields are extracted.
- *
- * when Uil.y has been scanned the collected data is written
- * to stdout.
- */
-
-%}
-
-%a 9999 /* transitions */
-
-%{
-
-#include <stdio.h>
-
-#define TRUE 1
-#define FALSE 0
-
-#define MAX_SYN 10
-
-#ifdef yywrap
-#undef yywrap
-#endif
-
-typedef struct _token
-{
- char * name;
- char * id;
- char * class;
- int num_syn;
- char * syn[MAX_SYN];
-}
- TokenRec, *Token;
-
-TokenRec token[1000];
-TokenRec temp;
-
-void add_token ();
-
-int phase = 0;
-int keyword_count;
-int line_num = 0;
-int in_comment = 0;
-int in_include = 0;
-int in_token = 0;
-int state = 0;
-int used = 0;
-
-%}
-
-
-
-%%
-
-
-[\n] {
- if (in_token == TRUE)
- {
- add_token (&temp);
- }
-
- in_token = FALSE;
- line_num++;
- }
-
-[ \t] { /* swallow */
- }
-
-
-"/\*" { /* swallow */
- }
-
-
-^%token {
- in_token = TRUE;
- state = 0;
- }
-
-[a-zA-Z0-9_]+ {
- if (in_token == TRUE)
- {
- switch (state)
- {
- case 0:
- temp.name = (char *)
- strcpy ((char *)
- malloc (strlen ((XmConst char *)yytext) + 1), (XmConst char *)yytext);
-
- temp.num_syn = 0;
- break;
-
- case 1:
- temp.id = (char *)
- strcpy ((char *)
- malloc (strlen ((XmConst char *)yytext) + 1), (XmConst char *)yytext);
- break;
-
- case 2:
- temp.class = (char *)
- strcpy ((char *)
- malloc (strlen ((XmConst char *)yytext) + 1), (XmConst char *)yytext);
- break;
-
- case 3:
- temp.syn[temp.num_syn] = (char *)
- strcpy ((char *)
- malloc (strlen ((XmConst char *)yytext) + 1), (XmConst char *)yytext);
- temp.num_syn++;
-
- if (temp.num_syn > MAX_SYN)
- printf (
- "ERROR, too many synonyms, line %d\n",
- line_num);
- break;
- }
-
- state++;
- }
- }
-
-. { /* swallow */
- }
-
-%%
-
-
-void
-add_token (t) /* keep sorted by name */
- Token t;
-{
- int i, j, k;
-
- for (j=0; j<used; j++) /* for each token */
- {
- if (strcmp (token[j].name, t->name) > 0) /* goes here */
- {
- for (i=used++; i>j; i--) /* make hole */
- token[i] = token[i-1];
-
- token[j] = *t; /* insert it */
-
- return;
- }
- }
-
- /*
- * if we get there then it goes at the end of the list
- */
-
- token[used++] = *t;
-}
-
-
-
-yywrap ()
-{
- int i, j, k;
-
- for (i=0; i<used; i++)
- {
- printf ("%s %s %s\n", token[i].name, token[i].id, token[i].class);
- }
- return (1);
-}
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$XConsortium: wmlutils.c /main/8 1995/08/29 11:11:24 drk $"
-#endif
-#endif
-/*
-* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
-
-/*
- * This file contains utilities used by WML.
- */
-
-
-#include "wml.h"
-
-#if defined(__STDC__)
-#include <stdlib.h>
-#include <string.h>
-#endif
-#include <stdio.h>
-
-\f
-/*
- * Utility to allocate dynamic space for a string, and return the
- * dynamic copy. Produces a NULL on null input.
- */
-
-char *wmlAllocateString (stg)
- char *stg;
-
-{
-
-char *dynstg; /* the dynamic copy */
-
-
-if ( stg == NULL ) return NULL;
-
-dynstg = (char *) malloc (strlen(stg)+1);
-strcpy (dynstg, stg);
-return dynstg;
-
-}
-
-
-\f
-/*
- * Utility to convert a string to upper case. The conversion happens in
- * place, destroying the original string.
- */
-
-void wmlUpperCaseString (stg)
- char *stg;
-
-{
-
-int ndx; /* loop index */
-
-
-if ( stg == NULL ) return;
-for ( ndx=0 ; ndx<strlen(stg) ; ndx++ )
- stg[ndx] = _upper (stg[ndx]);
-
-}
-
-
-\f
-/*
- * Routines for accessing and manipulating dynamic handle lists.
- */
-
-
-/*
- * Initialize a dynamic handle list. Allocate a vector of the given
- * size, and set the count and number used (0).
- *
- * listptr the list to be inited
- * size # entries in handle vector
- * is_ordered TRUE is list is to be ordered
- */
-
-void wmlInitHList (listptr, size, is_ordered)
- DynamicHandleListDefPtr listptr;
- int size;
- int is_ordered;
-
-{
-
-listptr->cnt = 0;
-listptr->max = size;
-listptr->ordered = is_ordered;
-listptr->hvec = (ObjectHandleDefPtr) malloc(size*sizeof(ObjectHandleDef));
-
-return;
-
-}
-
-
-\f
-/*
- * Routine to resize a dynamic handle list. Increases the size if required,
- * but does nothing if the list is already big enough.
- *
- * listptr the dynamic list
- * new_size new list size
- */
-
-void wmlResizeHList (listptr, new_size)
- DynamicHandleListDefPtr listptr;
- int new_size;
-
-{
-
-ObjectHandleDefPtr new_vec; /* reallocated vector */
-
-
-if ( listptr->max >= new_size ) return;
-listptr->max = new_size;
-new_vec = (ObjectHandleDefPtr) realloc
- (listptr->hvec, new_size*sizeof(ObjectHandleDef));
-listptr->hvec = new_vec;
-
-return;
-
-}
-
-
-\f
-/*
- * Routine to clear a dynamic handle list. It leaves the handle vector intact,
- * but frees all the allocated names. The count is reset to 0.
- * but does nothing if the list is already big enough.
- *
- * listptr the dynamic list
- */
-
-void wmlClearHList (listptr)
- DynamicHandleListDefPtr listptr;
-
-{
-
-int ndx; /* current index in list */
-
-
-for ( ndx=0 ; ndx<listptr->cnt ; ndx++ )
- {
- free (listptr->hvec[ndx].objname);
- listptr->hvec[ndx].objname = NULL;
- }
-listptr->cnt = 0;
-
-return;
-
-}
-
-
-\f
-/*
- * Function to find a name in a dynamic list. This will function on both
- * ordered and unordered lists.
- *
- * listptr the dynamic list
- * name the name to look up in the list
- *
- * returns:
- * >= 0 name found, index in list
- * < 0 name not found
- */
-
-int wmlFindInHList (listptr, name)
- DynamicHandleListDefPtr listptr;
- char *name;
-
-{
-
-int ndx; /* current index in list */
-int londx; /* low index */
-int hindx; /* high index */
-int midndx; /* midpoint index */
-int cmpres; /* strcmp result */
-
-
-/*
- * Binary search if ordered, brute force otherwise
- */
-if ( listptr->ordered )
- {
- for ( londx=0,hindx=listptr->cnt-1 ; hindx>=londx ; )
- {
- midndx = (londx+hindx) / 2;
- cmpres = strcmp (name, listptr->hvec[midndx].objname);
- if ( cmpres < 0 )
- hindx = midndx - 1;
- if ( cmpres > 0 )
- londx = midndx + 1;
- if ( cmpres == 0 )
- return midndx;
- }
- return -1;
- }
-else
- {
- for ( ndx=0 ; ndx<listptr->cnt ; ndx++ )
- if ( strcmp(name,listptr->hvec[ndx].objname) == 0 )
- return ndx;
- return -1;
- }
-
-}
-
-
-\f
-/*
- * Routine to insert an entry into a list. The insertion is ordered or
- * unordered depending on the way the list is marked. Unordered lists
- * insert at the end. This routine assumes no duplicates will be entered
- * in the list.
- *
- * listptr the list
- * name the name under which to insert
- * obj the object to insert
- */
-
-void wmlInsertInHList (listptr, name, obj)
- DynamicHandleListDefPtr listptr;
- char *name;
- ObjectPtr obj;
-
-{
-
-int ndx; /* current index in list */
-int londx; /* low index */
-int hindx; /* high index */
-int midndx; /* midpoint index */
-int newndx; /* new entry index */
-int cmpres; /* strcmp result */
-
-
-/*
- * Guarantee enough space in the list
- */
-wmlResizeHList (listptr, listptr->cnt+1);
-
-/*
- * Binary search and insert if ordered, brute force otherwise
- */
-if ( listptr->ordered )
- {
- if ( listptr->cnt == 0 )
- {
- listptr->hvec[0].objname = wmlAllocateString (name);
- listptr->hvec[0].objptr = obj;
- listptr->cnt += 1;
- return;
- }
- for ( londx=0,hindx=listptr->cnt-1 ; hindx>=londx ; )
- {
- midndx = (londx+hindx) / 2;
- cmpres = strcmp (name, listptr->hvec[midndx].objname);
- if ( cmpres == 0 )
- {
- printf ("\nwmlInsertInHList: duplicate name '%s'found\n", name);
- return;
- }
- if ( londx == hindx ) break;
- if ( cmpres < 0 )
- hindx = midndx - 1;
- if ( cmpres > 0 )
- londx = midndx + 1;
- }
- /*
- * The new entry will go either at midndx or after midndx. Move down
- * the vector appropriately.
- */
- if ( cmpres < 0 )
- newndx = midndx;
- else
- newndx = midndx + 1;
- for ( ndx=listptr->cnt-1 ; ndx>=newndx ; ndx-- )
- {
- listptr->hvec[ndx+1].objname = listptr->hvec[ndx].objname;
- listptr->hvec[ndx+1].objptr = listptr->hvec[ndx].objptr;
- }
- listptr->hvec[newndx].objname = wmlAllocateString (name);
- listptr->hvec[newndx].objptr = obj;
- listptr->cnt += 1;
- return;
- }
-else
- {
- listptr->hvec[listptr->cnt].objname = wmlAllocateString (name);
- listptr->hvec[listptr->cnt].objptr = obj;
- listptr->cnt += 1;
- return;
- }
-
-}
-
-\f
-/*
- * Routine to insert an entry into a token list. The insertion is ordered.
- * This routine allows duplicates
- *
- * listptr the list
- * name the name under which to insert
- * obj the object to insert
- */
-void wmlInsertInKeyList (listptr, name, obj)
- DynamicHandleListDefPtr listptr;
- char *name;
- ObjectPtr obj;
-
-{
- int ndx; /* current index in list */
- int londx; /* low index */
- int hindx; /* high index */
- int midndx; /* midpoint index */
- int newndx; /* new entry index */
- int cmpres; /* strcmp result */
-
- /*
- * Guarantee enough space in the list
- */
- wmlResizeHList (listptr, listptr->cnt+1);
-
- /*
- * Binary search and insert
- */
- if ( listptr->cnt == 0 )
- {
- listptr->hvec[0].objname = wmlAllocateString (name);
- listptr->hvec[0].objptr = obj;
- listptr->cnt += 1;
- return;
- }
- for ( londx=0,hindx=listptr->cnt-1 ; hindx>=londx ; )
- {
- midndx = (londx+hindx) / 2;
- cmpres = strcmp (name, listptr->hvec[midndx].objname);
- if ( londx == hindx ) break;
- if ( cmpres < 0 )
- hindx = midndx - 1;
- if ( cmpres >= 0 )
- londx = midndx + 1;
- }
- /*
- * The new entry will go either at midndx or after midndx. Move down
- * the vector appropriately.
- */
- if ( cmpres < 0 )
- newndx = midndx;
- else
- newndx = midndx + 1;
- for ( ndx=listptr->cnt-1 ; ndx>=newndx ; ndx-- )
- {
- listptr->hvec[ndx+1].objname = listptr->hvec[ndx].objname;
- listptr->hvec[ndx+1].objptr = listptr->hvec[ndx].objptr;
- }
- listptr->hvec[newndx].objname = wmlAllocateString (name);
- listptr->hvec[newndx].objptr = obj;
- listptr->cnt += 1;
- return;
-}
-
-\f
-/*
- * Indicate if a resource is in a resource reference list by returning its
- * reference pointer.
- */
-
-WmlClassResDefPtr wmlResolveResIsMember (resobj, resref)
- WmlResourceDefPtr resobj;
- WmlClassResDefPtr resref;
-
-{
-
-while ( resref != NULL )
- {
- if ( resref->act_resource == resobj ) return resref;
- resref = resref->next;
- }
-return NULL;
-
-}
-
-\f
-/*
- * Indicate if a child is in a child reference list by returning its
- * reference pointer.
- */
-
-WmlClassChildDefPtr wmlResolveChildIsMember (childobj, childref)
- WmlChildDefPtr childobj;
- WmlClassChildDefPtr childref;
-
-{
-
-while ( childref != NULL )
- {
- if ( childref->act_child == childobj ) return childref;
- childref = childref->next;
- }
-return NULL;
-
-}
-
-
+++ /dev/null
-#!/bin/sh
-#####################################################################
-### File: 0040.xmbind
-###
-### Default Location: /usr/dt/config/Xsession.d/
-###
-### Purpose: Set XMBINDDIR directory to CDE
-### default /usr/dt/lib/bindings
-###
-### Description:
-### This script is invoked by means of the Xsession file
-### at user login. It sets a default value for the
-### environment variable XMBINDDIR. Motif looks in the
-### directory specified by this variable for the
-### xmbind.alias and virtual bindings files.
-###
-###
-### Invoked by: /usr/dt/bin/Xsession
-###
-### Product: @(#)Common Desktop Environment 1.0
-###
-### Note:
-###
-### The /usr/dt/config/Xsession.d/0040.dtims file is a
-### factory-default file and will be unconditionally overwritten upon
-### subsequent installation. To customize the XMBINDDIR value,
-### copy this file to the configuration directory,
-### /etc/dt/config/Xsession.d and change that version
-### of the file.
-###
-### Revision: $XConsortium: 0040.xmbind /main/3 1995/07/14 09:40:09 drk $
-#####################################################################
-
-
-XMBINDDIR=/usr/dt/lib/bindings
-export XMBINDDIR
-
-########################## eof #####################
+++ /dev/null
-XCOMM
-XCOMM @OSF_COPYRIGHT@
-XCOMM COPYRIGHT NOTICE
-XCOMM Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
-XCOMM ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
-XCOMM the full copyright text.
-XCOMM
-XCOMM
-XCOMM HISTORY
-XCOMM
-XCOMM $XConsortium: Imakefile /main/8 1995/07/14 09:39:48 drk $
-
-#ifdef CdeImake
-
-# ifdef USLArchitecture
-# if HasSharedLibraries
-EXTRA_LOAD_FLAGS = -z nodefs
-# endif
-# endif
-
-#endif /* CdeImake */
-
-INCLUDES = -I. -I$(INCLUDESRC) -I$(MINCLUDESRC)
- DEPLIBS1 = XmClientDepLibs
-LOCAL_LIBRARIES = XmClientLibs
-
-SRCS1= xmbind.c
-
-OBJS1= xmbind.o
-
-PROGRAMS = xmbind
-
-NormalLibraryObjectRule()
-
-MComplexProgramTarget_1(xmbind,$(LOCAL_LIBRARIES),NullParameter)
-
+++ /dev/null
-/* $XConsortium: README /main/3 1996/07/15 13:56:01 drk $ */
-This directory contains the xmbind client.
-
-xmbind is used to set up the bindings between keys on the
-keyboard and Motif virtual keys.
-
-Normally mwm will do this on initialization. If you are not
-running mwm, or wish to change the bindings without restarting
-mwm, use xmbind.
-
-For more information see the xmbind and VirtualBindings man pages.
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
-*/
-/*
- * HISTORY
-*/
-#ifdef REV_INFO
-#ifndef lint
-static char rcsid[] = "$TOG: xmbind.c /main/10 1997/06/18 17:34:48 samborn $"
-#endif
-#endif
-#include <stdio.h>
-#include <Xm/Xm.h>
-
-/* Internal routines "borrowed" from libXm. Don't try this at home! */
-extern Boolean _XmVirtKeysLoadFileBindings(char *fileName, String *binding);
-extern int _XmVirtKeysLoadFallbackBindings(Display *display, String *binding);
-
-void main(argc, argv)
- int argc;
- char **argv;
-{
- enum { XA_MOTIF_DEFAULT_BINDINGS, XA_MOTIF_BINDINGS };
- static char *atom_names[] = {
- "_MOTIF_DEFAULT_BINDINGS", "_MOTIF_BINDINGS" };
-
- Atom atoms[XtNumber(atom_names)];
- XtAppContext app_context;
- Display *display;
- String bindings = NULL;
-
- XtToolkitInitialize();
- app_context = XtCreateApplicationContext();
- display = XtOpenDisplay(app_context, NULL, argv[0], "Xmbind",
- NULL, 0, &argc, argv);
-
- if (display == NULL) {
- fprintf(stderr, "%s: Can't open display\n", argv[0]);
- exit(1);
- }
-
- XInternAtoms(display, atom_names, XtNumber(atom_names), False, atoms);
- if (argc == 2) {
- if (_XmVirtKeysLoadFileBindings (argv[1], &bindings) == True) {
- XDeleteProperty (display, RootWindow (display, 0),
- atoms[XA_MOTIF_DEFAULT_BINDINGS]);
- XChangeProperty (display, RootWindow(display, 0),
- atoms[XA_MOTIF_BINDINGS],
- XA_STRING, 8, PropModeReplace,
- (unsigned char *)bindings, strlen(bindings));
- XFlush (display);
- XtFree (bindings);
- exit(0);
- }
- else {
- fprintf(stderr, "%s: Can't open %s\n", argv[0], argv[1]);
- exit(1);
- }
- }
-
- XDeleteProperty (display, RootWindow (display, 0),
- atoms[XA_MOTIF_BINDINGS]);
- XDeleteProperty (display, RootWindow (display, 0),
- atoms[XA_MOTIF_DEFAULT_BINDINGS]);
-
- _XmVirtKeysLoadFallbackBindings (display, &bindings);
-
- XFlush (display);
- XtFree (bindings);
-
- exit(0);
-}
-
+++ /dev/null
-/*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
-/* $XConsortium: lndir.c /main/2 1996/11/01 10:11:58 drk $ */
-/* Create shadow link tree (after X11R4 script of the same name)
- Mark Reinhold (mbr@lcs.mit.edu)/3 January 1990 */
-
-/* Copyright 1990, Massachusetts Institute of Technology
-
- Permission to use, copy, modify, and distribute this program for any purpose
- and without fee is hereby granted, provided that this copyright and
- permission notice appear on all copies and supporting documentation, that
- the name of MIT not be used in advertising or publicity pertaining to
- distribution of this program without specific prior permission, and that
- notice be given in supporting documentation that copying and distribution is
- by permission of MIT. MIT makes no representations about the suitability of
- this software for any purpose. It is provided "as is" without expressed or
- implied warranty.
-*/
-
-/* From the original /bin/sh script:
-
- Used to create a copy of the a directory tree that has links for all
- non-directories (except those named RCS or SCCS). If you are
- building the distribution on more than one machine, you should use
- this script.
-
- If your master sources are located in /usr/local/src/X and you would like
- your link tree to be in /usr/local/src/new-X, do the following:
-
- % mkdir /usr/local/src/new-X
- % cd /usr/local/src/new-X
- % lndir ../X
-*/
-
-#include <X11/Xos.h>
-#include <stdio.h>
-#include <sys/stat.h>
-#include <sys/param.h>
-#include <errno.h>
-
-#ifndef X_NOT_POSIX
-#include <dirent.h>
-#else
-#ifdef SYSV
-#include <dirent.h>
-#else
-#ifdef USG
-#include <dirent.h>
-#else
-#include <sys/dir.h>
-#ifndef dirent
-#define dirent direct
-#endif
-#endif
-#endif
-#endif
-
-#ifdef X_NOT_STDC_ENV
-extern int errno;
-#endif
-
-int silent;
-
-void
-quit (code, fmt, a1, a2, a3)
-char *fmt;
-{
- fprintf (stderr, fmt, a1, a2, a3);
- putc ('\n', stderr);
- exit (code);
-}
-
-void
-quiterr (code, s)
-char *s;
-{
- perror (s);
- exit (code);
-}
-
-void
-msg (fmt, a1, a2, a3)
-char *fmt;
-{
- fprintf (stderr, fmt, a1, a2, a3);
- putc ('\n', stderr);
-}
-
-
-/* Recursively create symbolic links from the current directory to the "from"
- directory. Assumes that files described by fs and ts are directories. */
-
-dodir (fn, fs, ts, rel)
-char *fn; /* name of "from" directory, either absolute or
- relative to cwd */
-struct stat *fs, *ts; /* stats for the "from" directory and cwd */
-int rel; /* if true, prepend "../" to fn before using */
-{
- DIR *df;
- struct dirent *dp;
- char buf[MAXPATHLEN + 1], *p;
- char symbuf[MAXPATHLEN + 1];
- struct stat sb, sc;
- int n_dirs;
-
- if ((fs->st_dev == ts->st_dev) && (fs->st_ino == ts->st_ino)) {
- msg ("%s: From and to directories are identical!", fn);
- return 1;
- }
-
- if (rel)
- strcpy (buf, "../");
- else
- buf[0] = '\0';
- strcat (buf, fn);
-
- if (!(df = opendir (buf))) {
- msg ("%s: Cannot opendir", buf);
- return 1;
- }
-
- p = buf + strlen (buf);
- *p++ = '/';
- n_dirs = fs->st_nlink;
- while (dp = readdir (df)) {
- strcpy (p, dp->d_name);
-
- if (n_dirs > 0) {
- if (stat (buf, &sb) < 0) {
- perror (buf);
- continue;
- }
-
- if (sb.st_mode & S_IFDIR) {
- /* directory */
- n_dirs--;
- if (dp->d_name[0] == '.' &&
- (dp->d_name[1] == '\0' || (dp->d_name[1] == '.' &&
- dp->d_name[2] == '\0')))
- continue;
- if (!strcmp (dp->d_name, "RCS"))
- continue;
- if (!strcmp (dp->d_name, "SCCS"))
- continue;
- if (!silent)
- printf ("%s:\n", buf);
- if ((stat (dp->d_name, &sc) < 0) && (errno == ENOENT)) {
- if (mkdir (dp->d_name, 0777) < 0 ||
- stat (dp->d_name, &sc) < 0) {
- perror (dp->d_name);
- continue;
- }
- }
- if (readlink (dp->d_name, symbuf, sizeof(symbuf) - 1) >= 0) {
- msg ("%s: is a link instead of a directory\n", dp->d_name);
- continue;
- }
- if (chdir (dp->d_name) < 0) {
- perror (dp->d_name);
- continue;
- }
- dodir (buf, &sb, &sc, (buf[0] != '/'));
- if (chdir ("..") < 0)
- quiterr (1, "..");
- continue;
- }
- }
-
- /* non-directory */
- if (symlink (buf, dp->d_name) < 0) {
- int saverrno = errno;
- int symlen;
- symlen = readlink(dp->d_name, symbuf, sizeof(symbuf) - 1);
- errno = saverrno;
- if (symlen > 0)
- symbuf[symlen] = '\0';
- if (symlen < 0 || strcmp(symbuf, buf))
- perror (dp->d_name);
- }
- }
-
- closedir (df);
- return 0;
-}
-
-
-main (ac, av)
-int ac;
-char **av;
-{
- char *fn, *tn;
- struct stat fs, ts;
-
- silent = 0;
- if (ac > 1 && !strcmp(av[1], "-silent")) {
- silent = 1;
- }
- if (ac < silent + 2 || ac > silent + 3)
- quit (1, "usage: %s [-silent] fromdir [todir]", av[0]);
-
- fn = av[silent + 1];
- if (ac == silent + 3)
- tn = av[silent + 2];
- else
- tn = ".";
-
- /* to directory */
- if (stat (tn, &ts) < 0)
- quiterr (1, tn);
- if (!(ts.st_mode & S_IFDIR))
- quit (2, "%s: Not a directory", tn);
- if (chdir (tn) < 0)
- quiterr (1, tn);
-
- /* from directory */
- if (stat (fn, &fs) < 0)
- quiterr (1, fn);
- if (!(fs.st_mode & S_IFDIR))
- quit (2, "%s: Not a directory", fn);
-
- exit (dodir (fn, &fs, &ts, 0));
-}