From 700b9d2dd45a45763ab1541622a45f44ff948554 Mon Sep 17 00:00:00 2001 From: Jon Trulson Date: Wed, 28 Mar 2018 12:15:04 -0600 Subject: [PATCH] Remove old cruft: osf/* and utils/prog* The osf/ stuff includes uil, wml, etc - we expect these to be provided by Motif, and make no attempt to build them in CDE, so no need for them. The only program in utils/prog/ is an ancient verion of lndir that we do not need for CDE. If you need lndir for some reason, use the laters version from Xorg, usually installed via the xutils-dev package. --- cde/osf/Imakefile | 20 - cde/osf/bindings/CDE | 39 - cde/osf/bindings/Imakefile | 48 - cde/osf/bindings/README | 39 - cde/osf/bindings/acorn | 35 - cde/osf/bindings/apollo | 38 - cde/osf/bindings/dec | 36 - cde/osf/bindings/dg_AViiON | 32 - cde/osf/bindings/doubleclick | 32 - cde/osf/bindings/hal | 32 - cde/osf/bindings/hitachi | 32 - cde/osf/bindings/hp | 38 - cde/osf/bindings/ibm | 32 - cde/osf/bindings/intergraph | 31 - cde/osf/bindings/intergraph17 | 31 - cde/osf/bindings/megatek | 36 - cde/osf/bindings/motorola | 37 - cde/osf/bindings/ncr_at | 32 - cde/osf/bindings/ncr_vt | 36 - cde/osf/bindings/pc | 41 - cde/osf/bindings/sgi | 33 - cde/osf/bindings/siemens_9733 | 35 - cde/osf/bindings/siemens_wx200 | 36 - cde/osf/bindings/sni | 30 - cde/osf/bindings/sni_97801 | 29 - cde/osf/bindings/sony | 34 - cde/osf/bindings/sun | 31 - cde/osf/bindings/sun_at | 26 - cde/osf/bindings/tek | 32 - cde/osf/bindings/xmbind.alias | 49 - cde/osf/uil/Imakefile | 74 - cde/osf/uil/Uil.h | 179 -- cde/osf/uil/Uil.msg | 97 - cde/osf/uil/UilCmd.c | 332 -- cde/osf/uil/UilCmdDef.h | 94 - cde/osf/uil/UilCompGl.h | 147 - cde/osf/uil/UilDB.c | 1017 ------- cde/osf/uil/UilData.c | 210 -- cde/osf/uil/UilDef.h | 105 - cde/osf/uil/UilDefI.h | 620 ---- cde/osf/uil/UilDiagDef.h | 61 - cde/osf/uil/UilDiags.c | 1291 -------- cde/osf/uil/UilIODef.h | 76 - cde/osf/uil/UilKeyTab.c | 238 -- cde/osf/uil/UilLexAna.c | 2544 ---------------- cde/osf/uil/UilLexDef.h | 84 - cde/osf/uil/UilLstLst.c | 1032 ------- cde/osf/uil/UilLstMac.c | 1753 ----------- cde/osf/uil/UilMain.c | 675 ---- cde/osf/uil/UilMess.h | 117 - cde/osf/uil/UilMessTab.h | 245 -- cde/osf/uil/UilP2Out.c | 4052 ------------------------- cde/osf/uil/UilP2Reslv.c | 315 -- cde/osf/uil/UilSarComp.c | 984 ------ cde/osf/uil/UilSarDef.h | 157 - cde/osf/uil/UilSarExp.c | 337 -- cde/osf/uil/UilSarInc.c | 247 -- cde/osf/uil/UilSarMod.c | 887 ------ cde/osf/uil/UilSarObj.c | 2423 --------------- cde/osf/uil/UilSarProc.c | 464 --- cde/osf/uil/UilSarVal.c | 3870 ----------------------- cde/osf/uil/UilSemCSet.c | 297 -- cde/osf/uil/UilSemVal.c | 4750 ----------------------------- cde/osf/uil/UilSrcDef.h | 164 - cde/osf/uil/UilSrcSrc.c | 1268 -------- cde/osf/uil/UilSymDef.h | 938 ------ cde/osf/uil/UilSymGl.h | 113 - cde/osf/uil/UilSymNam.c | 474 --- cde/osf/uil/UilSymStor.c | 1912 ------------ cde/osf/uil/XmAppl.uil | 88 - cde/osf/uil/libUil.elist | 507 ---- cde/osf/wml/Imakefile | 103 - cde/osf/wml/README | 416 --- cde/osf/wml/Uil.y | 1404 --------- cde/osf/wml/UilDBDef.h | 447 --- cde/osf/wml/motif.wml | 5233 -------------------------------- cde/osf/wml/wml.c | 271 -- cde/osf/wml/wml.h | 708 ----- cde/osf/wml/wmldbcreate.c | 686 ----- cde/osf/wml/wmllex.l | 127 - cde/osf/wml/wmlouth.c | 1964 ------------ cde/osf/wml/wmloutkey.c | 834 ----- cde/osf/wml/wmloutmm.c | 332 -- cde/osf/wml/wmloutp1.c | 75 - cde/osf/wml/wmlparse.y | 728 ----- cde/osf/wml/wmlresolve.c | 1829 ----------- cde/osf/wml/wmlsynbld.c | 1299 -------- cde/osf/wml/wmluiltok.l | 194 -- cde/osf/wml/wmlutils.c | 438 --- cde/osf/xmbind/0040.xmbind | 38 - cde/osf/xmbind/Imakefile | 36 - cde/osf/xmbind/README | 11 - cde/osf/xmbind/xmbind.c | 99 - cde/util/progs/lndir.c | 242 -- 94 files changed, 53784 deletions(-) delete mode 100644 cde/osf/Imakefile delete mode 100644 cde/osf/bindings/CDE delete mode 100644 cde/osf/bindings/Imakefile delete mode 100644 cde/osf/bindings/README delete mode 100644 cde/osf/bindings/acorn delete mode 100644 cde/osf/bindings/apollo delete mode 100644 cde/osf/bindings/dec delete mode 100644 cde/osf/bindings/dg_AViiON delete mode 100644 cde/osf/bindings/doubleclick delete mode 100644 cde/osf/bindings/hal delete mode 100644 cde/osf/bindings/hitachi delete mode 100644 cde/osf/bindings/hp delete mode 100644 cde/osf/bindings/ibm delete mode 100644 cde/osf/bindings/intergraph delete mode 100644 cde/osf/bindings/intergraph17 delete mode 100644 cde/osf/bindings/megatek delete mode 100644 cde/osf/bindings/motorola delete mode 100644 cde/osf/bindings/ncr_at delete mode 100644 cde/osf/bindings/ncr_vt delete mode 100644 cde/osf/bindings/pc delete mode 100644 cde/osf/bindings/sgi delete mode 100644 cde/osf/bindings/siemens_9733 delete mode 100644 cde/osf/bindings/siemens_wx200 delete mode 100644 cde/osf/bindings/sni delete mode 100644 cde/osf/bindings/sni_97801 delete mode 100644 cde/osf/bindings/sony delete mode 100644 cde/osf/bindings/sun delete mode 100644 cde/osf/bindings/sun_at delete mode 100644 cde/osf/bindings/tek delete mode 100644 cde/osf/bindings/xmbind.alias delete mode 100644 cde/osf/uil/Imakefile delete mode 100644 cde/osf/uil/Uil.h delete mode 100644 cde/osf/uil/Uil.msg delete mode 100644 cde/osf/uil/UilCmd.c delete mode 100644 cde/osf/uil/UilCmdDef.h delete mode 100644 cde/osf/uil/UilCompGl.h delete mode 100644 cde/osf/uil/UilDB.c delete mode 100644 cde/osf/uil/UilData.c delete mode 100644 cde/osf/uil/UilDef.h delete mode 100644 cde/osf/uil/UilDefI.h delete mode 100644 cde/osf/uil/UilDiagDef.h delete mode 100644 cde/osf/uil/UilDiags.c delete mode 100644 cde/osf/uil/UilIODef.h delete mode 100644 cde/osf/uil/UilKeyTab.c delete mode 100644 cde/osf/uil/UilLexAna.c delete mode 100644 cde/osf/uil/UilLexDef.h delete mode 100644 cde/osf/uil/UilLstLst.c delete mode 100644 cde/osf/uil/UilLstMac.c delete mode 100644 cde/osf/uil/UilMain.c delete mode 100644 cde/osf/uil/UilMess.h delete mode 100644 cde/osf/uil/UilMessTab.h delete mode 100644 cde/osf/uil/UilP2Out.c delete mode 100644 cde/osf/uil/UilP2Reslv.c delete mode 100644 cde/osf/uil/UilSarComp.c delete mode 100644 cde/osf/uil/UilSarDef.h delete mode 100644 cde/osf/uil/UilSarExp.c delete mode 100644 cde/osf/uil/UilSarInc.c delete mode 100644 cde/osf/uil/UilSarMod.c delete mode 100644 cde/osf/uil/UilSarObj.c delete mode 100644 cde/osf/uil/UilSarProc.c delete mode 100644 cde/osf/uil/UilSarVal.c delete mode 100644 cde/osf/uil/UilSemCSet.c delete mode 100644 cde/osf/uil/UilSemVal.c delete mode 100644 cde/osf/uil/UilSrcDef.h delete mode 100644 cde/osf/uil/UilSrcSrc.c delete mode 100644 cde/osf/uil/UilSymDef.h delete mode 100644 cde/osf/uil/UilSymGl.h delete mode 100644 cde/osf/uil/UilSymNam.c delete mode 100644 cde/osf/uil/UilSymStor.c delete mode 100644 cde/osf/uil/XmAppl.uil delete mode 100644 cde/osf/uil/libUil.elist delete mode 100644 cde/osf/wml/Imakefile delete mode 100644 cde/osf/wml/README delete mode 100644 cde/osf/wml/Uil.y delete mode 100644 cde/osf/wml/UilDBDef.h delete mode 100644 cde/osf/wml/motif.wml delete mode 100644 cde/osf/wml/wml.c delete mode 100644 cde/osf/wml/wml.h delete mode 100644 cde/osf/wml/wmldbcreate.c delete mode 100644 cde/osf/wml/wmllex.l delete mode 100644 cde/osf/wml/wmlouth.c delete mode 100644 cde/osf/wml/wmloutkey.c delete mode 100644 cde/osf/wml/wmloutmm.c delete mode 100644 cde/osf/wml/wmloutp1.c delete mode 100644 cde/osf/wml/wmlparse.y delete mode 100644 cde/osf/wml/wmlresolve.c delete mode 100644 cde/osf/wml/wmlsynbld.c delete mode 100644 cde/osf/wml/wmluiltok.l delete mode 100644 cde/osf/wml/wmlutils.c delete mode 100755 cde/osf/xmbind/0040.xmbind delete mode 100644 cde/osf/xmbind/Imakefile delete mode 100644 cde/osf/xmbind/README delete mode 100644 cde/osf/xmbind/xmbind.c delete mode 100644 cde/util/progs/lndir.c diff --git a/cde/osf/Imakefile b/cde/osf/Imakefile deleted file mode 100644 index 4080dee2..00000000 --- a/cde/osf/Imakefile +++ /dev/null @@ -1,20 +0,0 @@ -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)) diff --git a/cde/osf/bindings/CDE b/cde/osf/bindings/CDE deleted file mode 100644 index 8bc825f1..00000000 --- a/cde/osf/bindings/CDE +++ /dev/null @@ -1,39 +0,0 @@ -! $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 : KP_Enter, Execute -osfAddMode : ShiftF8 -osfBackSpace : BackSpace -osfBeginLine : Home, Begin -osfCancel : Escape, Cancel, Ctrls -osfClear : Clear -osfCopy : Ctrlc, CtrlInsert -osfCut : Ctrlx, ShiftDelete -osfDelete : Delete -osfDown : Down -osfEndLine : End -osfHelp : F1, Help -osfInsert : Insert -osfLeft : Left -osfMenu : ShiftF10, Menu -osfMenuBar : F10, ShiftMenu -osfPageDown : Next -osfPageUp : Prior -osfPaste : Ctrlv, ShiftInsert -osfRight : Right -osfSelect : Select -osfSwitchDirection : AltReturn, AltKP_Enter -osfUndo : Undo -osfUp : Up diff --git a/cde/osf/bindings/Imakefile b/cde/osf/bindings/Imakefile deleted file mode 100644 index ea7367c8..00000000 --- a/cde/osf/bindings/Imakefile +++ /dev/null @@ -1,48 +0,0 @@ -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:: - diff --git a/cde/osf/bindings/README b/cde/osf/bindings/README deleted file mode 100644 index 23574d41..00000000 --- a/cde/osf/bindings/README +++ /dev/null @@ -1,39 +0,0 @@ -/* $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. diff --git a/cde/osf/bindings/acorn b/cde/osf/bindings/acorn deleted file mode 100644 index c400a10c..00000000 --- a/cde/osf/bindings/acorn +++ /dev/null @@ -1,35 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine :Alt Right -osfBeginLine :Alt Left -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : F1 -osfMenu :Shift F10 -osfMenuBar : F10 -osfActivate : KP_Enter -osfCopy : Select - diff --git a/cde/osf/bindings/apollo b/cde/osf/bindings/apollo deleted file mode 100644 index b2f5aa75..00000000 --- a/cde/osf/bindings/apollo +++ /dev/null @@ -1,38 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : apRightBar -osfBeginLine : apLeftBar -osfPageUp : apUpBox -osfPageDown : apDownBox -osfPageLeft : apLeftBox -osfPageRight : apRightBox -osfBackSpace : BackSpace -osfDelete : apCharDel -osfInsert : Select -osfAddMode :Shift F8 -osfHelp : Help -osfMenu :Shift F10 -osfMenuBar : F10 -osfCopy : apCopy -osfCut : apCut -osfPaste : apPaste -osfUndo : Undo diff --git a/cde/osf/bindings/dec b/cde/osf/bindings/dec deleted file mode 100644 index e902019b..00000000 --- a/cde/osf/bindings/dec +++ /dev/null @@ -1,36 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine :Alt Right -osfBeginLine :Alt Left -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : Delete -osfDelete : DRemove -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : Help -osfMenu :Shift F10 -osfMenuBar : F10 -osfSelect : Select -osfActivate : KP_Enter -osfPrimaryPaste : F14 -osfQuickPaste : F17 diff --git a/cde/osf/bindings/dg_AViiON b/cde/osf/bindings/dg_AViiON deleted file mode 100644 index ae0a4bbe..00000000 --- a/cde/osf/bindings/dg_AViiON +++ /dev/null @@ -1,32 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : End -osfBeginLine : Home -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : F1 -osfMenu :Shift F10 -osfMenuBar : F10 diff --git a/cde/osf/bindings/doubleclick b/cde/osf/bindings/doubleclick deleted file mode 100644 index 447c3eb8..00000000 --- a/cde/osf/bindings/doubleclick +++ /dev/null @@ -1,32 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : End -osfBeginLine : Home -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : F1 -osfMenu :Shift F10 -osfMenuBar : F10 diff --git a/cde/osf/bindings/hal b/cde/osf/bindings/hal deleted file mode 100644 index 12ae3d5f..00000000 --- a/cde/osf/bindings/hal +++ /dev/null @@ -1,32 +0,0 @@ -! $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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : F33 -osfBeginLine : F27 -osfPageUp : F29 -osfPageDown : F35 -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : Help -osfMenu :Shift F10 -osfMenuBar : F10 -osfCopy : F16 -osfCut : F20 -osfPaste : F18 -osfUndo : F14 diff --git a/cde/osf/bindings/hitachi b/cde/osf/bindings/hitachi deleted file mode 100644 index c725a065..00000000 --- a/cde/osf/bindings/hitachi +++ /dev/null @@ -1,32 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine :Alt Right -osfBeginLine :Alt Left -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : F1 -osfMenu :Shift F10 -osfMenuBar : F10 diff --git a/cde/osf/bindings/hp b/cde/osf/bindings/hp deleted file mode 100644 index 1972006b..00000000 --- a/cde/osf/bindings/hp +++ /dev/null @@ -1,38 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : End -osfBeginLine : Home -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : F1 -osfMenu :Shift F10 -osfMenuBar : F10 -osfSelect : Select -osfClear : Clear -osfUndo : Undo -osfPrimaryPaste :Meta Ctrl Insert - - diff --git a/cde/osf/bindings/ibm b/cde/osf/bindings/ibm deleted file mode 100644 index e4069867..00000000 --- a/cde/osf/bindings/ibm +++ /dev/null @@ -1,32 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : End -osfBeginLine : Home -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : F1 -osfMenu :Shift F10 -osfMenuBar : F10 diff --git a/cde/osf/bindings/intergraph b/cde/osf/bindings/intergraph deleted file mode 100644 index 39c6225c..00000000 --- a/cde/osf/bindings/intergraph +++ /dev/null @@ -1,31 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine :Alt Right -osfBeginLine :Alt Left -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : Help -osfMenu :Shift F10 -osfMenuBar : F10 diff --git a/cde/osf/bindings/intergraph17 b/cde/osf/bindings/intergraph17 deleted file mode 100644 index 89a4cb26..00000000 --- a/cde/osf/bindings/intergraph17 +++ /dev/null @@ -1,31 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine :Alt Right -osfBeginLine :Alt Left -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : F17 -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : Help -osfMenu :Shift F10 -osfMenuBar : F10 diff --git a/cde/osf/bindings/megatek b/cde/osf/bindings/megatek deleted file mode 100644 index d0b503c2..00000000 --- a/cde/osf/bindings/megatek +++ /dev/null @@ -1,36 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : R13 -osfBeginLine : F27 -osfPageUp : F29 -osfPageDown : F35 -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : Help -osfMenu :Shift F10 -osfMenuBar : F10 -osfCopy : F16 -osfCut : F20 -osfPaste : F18 -osfUndo : F14 diff --git a/cde/osf/bindings/motorola b/cde/osf/bindings/motorola deleted file mode 100644 index 18327965..00000000 --- a/cde/osf/bindings/motorola +++ /dev/null @@ -1,37 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : End -osfBeginLine : Home -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : F1 -osfMenu :Shift F10 -osfMenuBar : F10 diff --git a/cde/osf/bindings/ncr_at b/cde/osf/bindings/ncr_at deleted file mode 100644 index c1e6c9a1..00000000 --- a/cde/osf/bindings/ncr_at +++ /dev/null @@ -1,32 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : End -osfBeginLine : Home -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : F1 -osfMenu :Shift F10 -osfMenuBar : F10 -osfActivate : KP_Enter diff --git a/cde/osf/bindings/ncr_vt b/cde/osf/bindings/ncr_vt deleted file mode 100644 index 80420a08..00000000 --- a/cde/osf/bindings/ncr_vt +++ /dev/null @@ -1,36 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine :Alt Right -osfBeginLine :Alt Left -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : Help -osfMenu :Shift F10 -osfMenuBar : F10 -osfSelect : Select -osfActivate : KP_Enter -osfQuickPaste : F17 - - diff --git a/cde/osf/bindings/pc b/cde/osf/bindings/pc deleted file mode 100644 index 3772cffe..00000000 --- a/cde/osf/bindings/pc +++ /dev/null @@ -1,41 +0,0 @@ -! $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 : KP_Enter -osfCancel : Escape -osfMenuBar : F10 -osfMenu : Shift F10 -osfHelp : F1 - -osfBackSpace : BackSpace -osfInsert : Insert -osfDelete : Delete - -osfPageUp : Prior -osfPageDown : Next -osfPageLeft : Ctrl Prior -osfPageRight : Ctrl Next -osfEndLine : End -osfBeginLine : Home - -osfLeft : Left -osfRight : Right -osfUp : Up -osfDown : Down - -osfAddMode : Shift F8 - -osfCut : Shift Delete -osfCopy : Ctrl Insert -osfPaste : Shift Insert - -osfPrimaryPaste :Meta Ctrl Insert - diff --git a/cde/osf/bindings/sgi b/cde/osf/bindings/sgi deleted file mode 100644 index 19b3141f..00000000 --- a/cde/osf/bindings/sgi +++ /dev/null @@ -1,33 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : End -osfBeginLine : Home -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : F1 -osfActivate : KP_Enter -osfMenu :Shift F10 -osfMenuBar : F10 diff --git a/cde/osf/bindings/siemens_9733 b/cde/osf/bindings/siemens_9733 deleted file mode 100644 index 1d637138..00000000 --- a/cde/osf/bindings/siemens_9733 +++ /dev/null @@ -1,35 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : End -osfBeginLine : Home -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete_char -osfInsert : Insert_char -osfAddMode :Shift F8 -osfHelp : Help -osfMenu : Linefeed -osfMenuBar : F10 - - - diff --git a/cde/osf/bindings/siemens_wx200 b/cde/osf/bindings/siemens_wx200 deleted file mode 100644 index 48afe00d..00000000 --- a/cde/osf/bindings/siemens_wx200 +++ /dev/null @@ -1,36 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : Cancel -osfBeginLine : Home -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete,F29 -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : Help,F1 -osfActivate : KP_Enter -osfMenu : Menu,Shift F10 -osfMenuBar : F10 - - - diff --git a/cde/osf/bindings/sni b/cde/osf/bindings/sni deleted file mode 100644 index 314b07dc..00000000 --- a/cde/osf/bindings/sni +++ /dev/null @@ -1,30 +0,0 @@ -! $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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : End -osfBeginLine : Home -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode : Shift F8 -osfHelp : F1 -osfActivate : KP_Enter -osfMenu : Shift F10 -osfMenuBar : F10 diff --git a/cde/osf/bindings/sni_97801 b/cde/osf/bindings/sni_97801 deleted file mode 100644 index c8111972..00000000 --- a/cde/osf/bindings/sni_97801 +++ /dev/null @@ -1,29 +0,0 @@ -! $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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : Cancel,End -osfBeginLine : Home -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete,F29 -osfInsert : Insert -osfAddMode : Shift F8 -osfHelp : Help,F1 -osfActivate : KP_Enter -osfMenu : Menu,Shift F10 -osfMenuBar : F10 diff --git a/cde/osf/bindings/sony b/cde/osf/bindings/sony deleted file mode 100644 index be5da78f..00000000 --- a/cde/osf/bindings/sony +++ /dev/null @@ -1,34 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine :Alt Right -osfBeginLine :Alt Left -osfPageUp :Alt Up -osfPageDown :Alt Down -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : F5 -osfAddMode :Shift F18 -osfHelp : F1 -osfMenu :Shift F10 -osfMenuBar : F10 -osfSelect : Select -osfActivate : KP_Enter diff --git a/cde/osf/bindings/sun b/cde/osf/bindings/sun deleted file mode 100644 index 04afa64e..00000000 --- a/cde/osf/bindings/sun +++ /dev/null @@ -1,31 +0,0 @@ -! -! -! $Id: sun /main/3 1999/07/14 10:48:40 mgreess $ -! -! "Sun Microsystems, Inc." -osfActivate : KP_Enter -osfCancel : Escape -osfHelp : Help,F1 -osfMenu :Shift F10 -osfMenuBar : F10 - -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down - -osfBeginLine : Home -osfEndLine : End - -osfPageUp : Prior -osfPageDown : Next - -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfUndo : Undo -osfAddMode :Shift F8 -osfCopy : SunCopy -osfCut : SunCut -osfPaste : SunPaste - diff --git a/cde/osf/bindings/sun_at b/cde/osf/bindings/sun_at deleted file mode 100644 index 9ee72d91..00000000 --- a/cde/osf/bindings/sun_at +++ /dev/null @@ -1,26 +0,0 @@ -! -! -! $Id: sun_at /main/2 1999/03/26 17:09:14 samborn $ -! -! "Sun Microsystems, Inc." -osfActivate : KP_Enter -osfCancel : Escape -osfHelp : F1 -osfMenu :Shift F10 -osfMenuBar : F10 - -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down - -osfBeginLine : Home -osfEndLine : End - -osfPageUp : Prior -osfPageDown : Next - -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 diff --git a/cde/osf/bindings/tek b/cde/osf/bindings/tek deleted file mode 100644 index 2d1856a2..00000000 --- a/cde/osf/bindings/tek +++ /dev/null @@ -1,32 +0,0 @@ -! -! @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 : Escape -osfLeft : Left -osfUp : Up -osfRight : Right -osfDown : Down -osfEndLine : End -osfBeginLine : Home -osfPageUp : Prior -osfPageDown : Next -osfBackSpace : BackSpace -osfDelete : Delete -osfInsert : Insert -osfAddMode :Shift F8 -osfHelp : F1 -osfMenu :Shift F10 -osfMenuBar : F10 diff --git a/cde/osf/bindings/xmbind.alias b/cde/osf/bindings/xmbind.alias deleted file mode 100644 index 3660e0e0..00000000 --- a/cde/osf/bindings/xmbind.alias +++ /dev/null @@ -1,49 +0,0 @@ -! -! @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: -! "[]" 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 diff --git a/cde/osf/uil/Imakefile b/cde/osf/uil/Imakefile deleted file mode 100644 index 3dbaf3e9..00000000 --- a/cde/osf/uil/Imakefile +++ /dev/null @@ -1,74 +0,0 @@ -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 - -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) diff --git a/cde/osf/uil/Uil.h b/cde/osf/uil/Uil.h deleted file mode 100644 index a1705063..00000000 --- a/cde/osf/uil/Uil.h +++ /dev/null @@ -1,179 +0,0 @@ -/* - * 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 */ diff --git a/cde/osf/uil/Uil.msg b/cde/osf/uil/Uil.msg deleted file mode 100644 index 27b1b535..00000000 --- a/cde/osf/uil/Uil.msg +++ /dev/null @@ -1,97 +0,0 @@ -$ $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 diff --git a/cde/osf/uil/UilCmd.c b/cde/osf/uil/UilCmd.c deleted file mode 100644 index bd274853..00000000 --- a/cde/osf/uil/UilCmd.c +++ /dev/null @@ -1,332 +0,0 @@ -/* - * 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; - - - -/* -**++ -** 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); -} - - - diff --git a/cde/osf/uil/UilCmdDef.h b/cde/osf/uil/UilCmdDef.h deleted file mode 100644 index 340a59b9..00000000 --- a/cde/osf/uil/UilCmdDef.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * 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 */ diff --git a/cde/osf/uil/UilCompGl.h b/cde/osf/uil/UilCompGl.h deleted file mode 100644 index aedc54ed..00000000 --- a/cde/osf/uil/UilCompGl.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * 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 - -/* - * 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 */ diff --git a/cde/osf/uil/UilDB.c b/cde/osf/uil/UilDB.c deleted file mode 100644 index 8c29541d..00000000 --- a/cde/osf/uil/UilDB.c +++ /dev/null @@ -1,1017 +0,0 @@ -/* - * 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 -#include -#endif - -#include -#include - -#include "UilDefI.h" - -#define X_INCLUDE_PWD_H -#define XOS_USE_XT_LOCKING -#include -#include - -/* - * - * 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; - -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; -} - - - -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 ; inum_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 ; inum_items; i++) - { - table[i].at_name = string_table; - string_table += table[i].b_length + 1; - }; - - return; -} - - - -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; -} - - - -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; -} - - - -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; -} - - - -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; -} - - - - -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; -} - -/* - * 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); -} diff --git a/cde/osf/uil/UilData.c b/cde/osf/uil/UilData.c deleted file mode 100644 index da6ab0b7..00000000 --- a/cde/osf/uil/UilData.c +++ /dev/null @@ -1,210 +0,0 @@ -/* - * 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 - -#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
- -#include -#include -#include /* 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 -** -**/ - diff --git a/cde/osf/uil/UilDef.h b/cde/osf/uil/UilDef.h deleted file mode 100644 index bcd48600..00000000 --- a/cde/osf/uil/UilDef.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * 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 - -/* -** -** Common includes needed by public functions. -** -*/ -#include -#include /* This has to be loaded first. */ -#include -#include - -/* -** 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 */ diff --git a/cde/osf/uil/UilDefI.h b/cde/osf/uil/UilDefI.h deleted file mode 100644 index 243d5dc4..00000000 --- a/cde/osf/uil/UilDefI.h +++ /dev/null @@ -1,620 +0,0 @@ -/* - * 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 /* for _Xctimeparams */ - -#include -#include - -/* -** -** 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 */ diff --git a/cde/osf/uil/UilDiagDef.h b/cde/osf/uil/UilDiagDef.h deleted file mode 100644 index 80380c53..00000000 --- a/cde/osf/uil/UilDiagDef.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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 */ diff --git a/cde/osf/uil/UilDiags.c b/cde/osf/uil/UilDiags.c deleted file mode 100644 index ed3f16ea..00000000 --- a/cde/osf/uil/UilDiags.c +++ /dev/null @@ -1,1291 +0,0 @@ -/* - * 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 -#include -#include -#include -#include -#include - -#include - -#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 ); - } - -} - -/* -**++ -** 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; -} - -/* -**++ -** 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 - } - -} - -/* -**++ -** 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 - -} - -/* -**++ -** 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 - -} - - -/* -**++ -** 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 - -} - - -/* -**++ -** 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; -} - - -/* -**++ -** 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 */ - -} - - -/* -**++ -** 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 */ - -} - -/* -**++ -** 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 */ - -} - - - - -/* -**++ -** 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 ); - } - -} - - -/* -**++ -** 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 ]; -} - - - - - -/* -**++ -** 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 - */ -} - diff --git a/cde/osf/uil/UilIODef.h b/cde/osf/uil/UilIODef.h deleted file mode 100644 index 11e997d4..00000000 --- a/cde/osf/uil/UilIODef.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * 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 -#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 */ diff --git a/cde/osf/uil/UilKeyTab.c b/cde/osf/uil/UilKeyTab.c deleted file mode 100644 index 3a58655c..00000000 --- a/cde/osf/uil/UilKeyTab.c +++ /dev/null @@ -1,238 +0,0 @@ -/* - * 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; - - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - } - -} - diff --git a/cde/osf/uil/UilLexAna.c b/cde/osf/uil/UilLexAna.c deleted file mode 100644 index 5fee1992..00000000 --- a/cde/osf/uil/UilLexAna.c +++ /dev/null @@ -1,2544 +0,0 @@ -/* - * 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 -/* 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 /* Need this for MB_CUR_MAX */ - -#include /* Need this for _MrmOSSetLocale. */ - -#include "UilDefI.h" -#include - -double atof(); - -#include /* 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; - - - -/* -** -** 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 -*/ - - -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 }, - }, - }; - - -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 }; - - -/* -**++ -** 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; - - } - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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); - } -} - - -/* -**++ -** 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_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); - -} - - - -/* -** -** LOCAL FUNCTIONS -** -*/ - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; iw_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 - -/* -**++ -** 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; -} - - -/* -**++ -** 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; - - } - diff --git a/cde/osf/uil/UilLexDef.h b/cde/osf/uil/UilLexDef.h deleted file mode 100644 index b2be089d..00000000 --- a/cde/osf/uil/UilLexDef.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * 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 */ diff --git a/cde/osf/uil/UilLstLst.c b/cde/osf/uil/UilLstLst.c deleted file mode 100644 index b82dbadd..00000000 --- a/cde/osf/uil/UilLstLst.c +++ /dev/null @@ -1,1032 +0,0 @@ -/* - * 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 -#include - -#include - -#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; - - -/* -**++ -** 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; - -} - -/* -**++ -** 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; -} - - - - - - - -/* -**++ -** 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; -} - - -/* -**++ -** 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; -} - - -/* -**++ -** 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; -} - - -/* -**++ -** 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; -} - -/* -**++ -** 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; -} - -/* -**++ -** 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; -} - -/* -**++ -** 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; -} - - -/* -**++ -** 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); -} diff --git a/cde/osf/uil/UilLstMac.c b/cde/osf/uil/UilLstMac.c deleted file mode 100644 index ff3137bc..00000000 --- a/cde/osf/uil/UilLstMac.c +++ /dev/null @@ -1,1753 +0,0 @@ -/* - * 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 -#include /* For 64-bit architecture dependencies */ - - -#ifdef DXM_V11 -#include -#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 -** -**/ - - - -/* -**++ -** 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 ); - -} - -/* -**++ -** 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 ); - -} - -/* -**++ -** 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 ); - -} - -/* -**++ -** 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 ); - -} - -/* -**++ -** 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++; - -} - -/* -**++ -** 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--; - -} - -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"; - } - -} - -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"; - } - -} - -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"; - } - -} - - -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; - } - -} - - -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"; - -} - - -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"; - -} - diff --git a/cde/osf/uil/UilMain.c b/cde/osf/uil/UilMain.c deleted file mode 100644 index d60fb80c..00000000 --- a/cde/osf/uil/UilMain.c +++ /dev/null @@ -1,675 +0,0 @@ -/* - * 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 -/* 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 -#endif -#include "UilDefI.h" -#include - -/* -** -** 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 -#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) - - -/* -**++ -** 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 ); - -} - - -/* -**++ -** 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); -} - - - - - - -#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 */ - - - -/* -**++ -** 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; -} - - -#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 */ diff --git a/cde/osf/uil/UilMess.h b/cde/osf/uil/UilMess.h deleted file mode 100644 index 70b0465d..00000000 --- a/cde/osf/uil/UilMess.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * 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 diff --git a/cde/osf/uil/UilMessTab.h b/cde/osf/uil/UilMessTab.h deleted file mode 100644 index 369d28c8..00000000 --- a/cde/osf/uil/UilMessTab.h +++ /dev/null @@ -1,245 +0,0 @@ -/* - * 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 -#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 diff --git a/cde/osf/uil/UilP2Out.c b/cde/osf/uil/UilP2Out.c deleted file mode 100644 index c2815ab8..00000000 --- a/cde/osf/uil/UilP2Out.c +++ /dev/null @@ -1,4052 +0,0 @@ -/* - * 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 -#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; - - - -/* -**++ -** 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" ); - -} - -/* -**++ -** 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++; - -} - -/* -**++ -** 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]; - -} - -/* -**++ -** 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; - } - - - -/* -**++ -** 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; - - } - -} - - - -/* -**++ -** 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; - } - -} - - - -/* -**++ -** 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; - } - -} - - - -/* -**++ -** 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; - } - -} - - - -/* -**++ -** 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; - } - -} - - - -/* -**++ -** 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; - - } - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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); -} - - -/* -**++ -** 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; - } - } -} - -/* -**++ -** 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"); - -} - -/* -**++ -** 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" ); - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - - -/* -**++ -** 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 ); -} - -/* - *++ - * - * 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; - } - -} - - - -/* -**++ -** 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; - -} - -/* -**++ -** 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" ); - } - } - } - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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++; - } - } -} - - - -/* -**++ -** 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; - -} - -/* -**++ -** 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 ; ivalidation = 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"); - } - - - /* - ** 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"); - } -} diff --git a/cde/osf/uil/UilP2Reslv.c b/cde/osf/uil/UilP2Reslv.c deleted file mode 100644 index f1d1585f..00000000 --- a/cde/osf/uil/UilP2Reslv.c +++ /dev/null @@ -1,315 +0,0 @@ -/* - * 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 -** -**/ - - -/* -**++ -** 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); - - } - - - /* - ** 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); - - } - - - - -} diff --git a/cde/osf/uil/UilSarComp.c b/cde/osf/uil/UilSarComp.c deleted file mode 100644 index 4786d092..00000000 --- a/cde/osf/uil/UilSarComp.c +++ /dev/null @@ -1,984 +0,0 @@ -/* - * 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 - - - -#ifdef DXM_V11 -#include -#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 -** -**/ - - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - } -} - - -/* -**++ -** 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; -} - - -/* -**++ -** 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; -} - - -/* -**++ -** 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" ); - } - -} - - -/* -**++ -** 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; -} - - diff --git a/cde/osf/uil/UilSarDef.h b/cde/osf/uil/UilSarDef.h deleted file mode 100644 index 7ae415e1..00000000 --- a/cde/osf/uil/UilSarDef.h +++ /dev/null @@ -1,157 +0,0 @@ -/* - * 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 */ diff --git a/cde/osf/uil/UilSarExp.c b/cde/osf/uil/UilSarExp.c deleted file mode 100644 index dc0febaa..00000000 --- a/cde/osf/uil/UilSarExp.c +++ /dev/null @@ -1,337 +0,0 @@ -/* - * 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 -** -**/ - - - -/* -**++ -** 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; -} - - -/* -**++ -** 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; - -} - diff --git a/cde/osf/uil/UilSarInc.c b/cde/osf/uil/UilSarInc.c deleted file mode 100644 index 99412fc5..00000000 --- a/cde/osf/uil/UilSarInc.c +++ /dev/null @@ -1,247 +0,0 @@ -/* - * 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 -#include "UilDefI.h" - - -/* -** -** DEFINE and MACRO DEFINITIONS -** -**/ - - -/* -** -** EXTERNAL VARIABLE DECLARATIONS -** -**/ - - - -/* -** -** GLOBAL VARIABLE DECLARATIONS -** -**/ - - - -/* -** -** OWN VARIABLE DECLARATIONS -** -**/ - - -/* -**++ -** 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); - -} diff --git a/cde/osf/uil/UilSarMod.c b/cde/osf/uil/UilSarMod.c deleted file mode 100644 index 0f26f715..00000000 --- a/cde/osf/uil/UilSarMod.c +++ /dev/null @@ -1,887 +0,0 @@ -/* - * 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) - - -/* -**++ -** 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; iheader.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; - -} - - -/* -**++ -** 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; -} - -/* -**++ -** 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; -} - -/* -**++ -** 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; -} - -/* -**++ -** 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); - -} - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} diff --git a/cde/osf/uil/UilSarObj.c b/cde/osf/uil/UilSarObj.c deleted file mode 100644 index 92a28c72..00000000 --- a/cde/osf/uil/UilSarObj.c +++ /dev/null @@ -1,2423 +0,0 @@ -/* - * 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 -** -**/ - - - -/* -**++ -** 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'; - -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - -/* -**++ -** 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); - -} - - -/* -**++ -** 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 ); - -} - -/* -**++ -** 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 ); - -} - -/* -**++ -** 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); - } - -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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); - -} - -/* -**++ -** 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; - } - } - -} - -/* -**++ -** 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); - -} - - -/* -**++ -** 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; - } - } - } - } - -} - - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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 ); - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - } - } - } - -} - - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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); - -} - diff --git a/cde/osf/uil/UilSarProc.c b/cde/osf/uil/UilSarProc.c deleted file mode 100644 index 70078505..00000000 --- a/cde/osf/uil/UilSarProc.c +++ /dev/null @@ -1,464 +0,0 @@ -/* - * 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 -** -**/ - - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} diff --git a/cde/osf/uil/UilSarVal.c b/cde/osf/uil/UilSarVal.c deleted file mode 100644 index bc389e4a..00000000 --- a/cde/osf/uil/UilSarVal.c +++ /dev/null @@ -1,3870 +0,0 @@ -/* - * 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 - -#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 -** -**/ - - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - } - -} - - -/* -**++ -** 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); -} - - -/* -**++ -** 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 */ - -} - - - - - - - - - -/* -**++ -** 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; - -} - - - -/* -**++ -** 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 ); -} - - -/* -**++ -** 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; - - -} - -/* -**++ -** 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" ); - } - -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; -} - - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; -} - - -/* -**++ -** 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; - -} - -/* -**++ -** 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" ); - } - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - -/* -**++ -** 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; -} diff --git a/cde/osf/uil/UilSemCSet.c b/cde/osf/uil/UilSemCSet.c deleted file mode 100644 index 1f9fa748..00000000 --- a/cde/osf/uil/UilSemCSet.c +++ /dev/null @@ -1,297 +0,0 @@ -/* - * 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 - -#include "UilDefI.h" - -/* -** -** DEFINE and MACRO DEFINITIONS -** -**/ - - - -/* -** -** EXTERNAL VARIABLE DECLARATIONS -** -**/ - - -/* -** -** GLOBAL VARIABLE DECLARATIONS -** -**/ - - - -/* -** -** OWN VARIABLE DECLARATIONS -** -**/ - - - -/* -**++ -** 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]; - } - -} - - - -/* -**++ -** 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; - } - } -} - - - -/* -**++ -** 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; - -} - - diff --git a/cde/osf/uil/UilSemVal.c b/cde/osf/uil/UilSemVal.c deleted file mode 100644 index 79451aab..00000000 --- a/cde/osf/uil/UilSemVal.c +++ /dev/null @@ -1,4750 +0,0 @@ -/* - * 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 -#include -#include -#include - - -#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; - - - - -/* -**++ -** 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); - -} - - - -/* -**++ -** 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; - } - -} - - - -/* -**++ -** 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; -} - - - -/* -**++ -** 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 ; ndxaz_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 ; ndxaz_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; -} - - - -/* -**++ -** 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) ); - } - -} - - - -/* -**++ -** 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) ); - -} - - - -/* -**++ -** 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 -** -** 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); - -} - - - -/* -**++ -** 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) ); - } - -} - - - -/* -**++ -** 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*/ -} - - - -/* -**++ -** 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; - } - -} - - - -/* -**++ -** 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)); - } - -} - - - -/* -**++ -** 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; - -} - - - -/* -**++ -** 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; - -} - - - -/* -**++ -** 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; - -} - - - -/* -**++ -** 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; - } - -} - - - -/* -**++ -** 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); -} - - -/* -**++ -** 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); - -} - - - -/* -**++ -** 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); - -} - - - -/* -**++ -** 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); - -} - - - -/* -**++ -** 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); - -} - - -/* -**++ -** 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 ; jb_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)); - -} - - - -/* -**++ -** 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 */ - -/* -**++ -** 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; -} - - -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; - } -} - -/* -**++ -** 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; -} - -/* -**++ -** 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; - } -} - -/* -**++ -** 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; -} - -/* -**++ -** 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; -} - -/* -**++ -** 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; - } - -} - diff --git a/cde/osf/uil/UilSrcDef.h b/cde/osf/uil/UilSrcDef.h deleted file mode 100644 index c2eae791..00000000 --- a/cde/osf/uil/UilSrcDef.h +++ /dev/null @@ -1,164 +0,0 @@ -/* - * 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 */ diff --git a/cde/osf/uil/UilSrcSrc.c b/cde/osf/uil/UilSrcSrc.c deleted file mode 100644 index b9e01b64..00000000 --- a/cde/osf/uil/UilSrcSrc.c +++ /dev/null @@ -1,1268 +0,0 @@ -/* - * 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 - - - -/* -** -** 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; - - - - -/* -**++ -** 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, - ""); - - 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; -} - -/* -**++ -** 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; -} - -/* -**++ -** 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; -} - -/* -**++ -** 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); -} - - - - - - - -/* -**++ -** 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; -} - - -/* -**++ -** 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; -} - -/* -**++ -** 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; -} - -/* -**++ -** 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; -} - - -/* -**++ -** 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; -} - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; -} - -/* -**++ -** 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; -} diff --git a/cde/osf/uil/UilSymDef.h b/cde/osf/uil/UilSymDef.h deleted file mode 100644 index 2da178f8..00000000 --- a/cde/osf/uil/UilSymDef.h +++ /dev/null @@ -1,938 +0,0 @@ -/* - * 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 -#include - -/* -** 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 */ - - - -/* -** 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 */ - - - -/* -** 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; - - - -/* -** 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; - - - -/* -** 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 ]) ) - - -/* -** Value entry -*/ - -/* -** Types of values are included in UilSymDef.h -*/ - -/* -** Charsets supported by UIL are defined via WML in UilSymGen.h -*/ - - - -/* -** 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; - - - -/* -** 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)) - - -/* -** 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)) - - - -/* -** 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)) - - - -/* -** 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)) - - -/* -** 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)) - - -/* -** 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 */ - - -/* -** 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)) - - -/* -** 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)) - - - -/* -** 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)) - - - -/* -** 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)) - - - -/* -** 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)) - - -/* -** 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)) - - -/* -** 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)) - - -/* -** 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)) - - - -/* -** 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)) - - -/* -** 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)) - - -/* -** 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)) - - -/* -** 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)) - - -/* -** 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)) - - - -/* -** 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 */ diff --git a/cde/osf/uil/UilSymGl.h b/cde/osf/uil/UilSymGl.h deleted file mode 100644 index b3b2615c..00000000 --- a/cde/osf/uil/UilSymGl.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * 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 */ diff --git a/cde/osf/uil/UilSymNam.c b/cde/osf/uil/UilSymNam.c deleted file mode 100644 index 0d5be70c..00000000 --- a/cde/osf/uil/UilSymNam.c +++ /dev/null @@ -1,474 +0,0 @@ -/* - * 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 -** -**/ - - - -/* -**++ -** 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; -} - - -/* -**++ -** 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; -} - - -/* -**++ -** 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); -} - - -#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; iaz_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 diff --git a/cde/osf/uil/UilSymStor.c b/cde/osf/uil/UilSymStor.c deleted file mode 100644 index a5cb2943..00000000 --- a/cde/osf/uil/UilSymStor.c +++ /dev/null @@ -1,1912 +0,0 @@ -/* - * 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 - -#include -#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 -** -**/ - - - -/* -**++ -** 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; ib_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); -} - - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - -} - -/* -**++ -** 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; - -} - - -/* -**++ -** 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; - } - -} - - - -/* -**++ -** 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 ; ndxheader.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"); - -} - - -/* -**++ -** 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); - -} - - -/* -**++ -** 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 ); - -} - - -/* -**++ -** 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 ); - -} - - -/* -**++ -** 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 ); - -} - - -/* -**++ -** 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); - -} - - -/* -**++ -** 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 ); - -} - - -/* -**++ -** 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); - -} - - -/* -**++ -** 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 ); -} - - -/* -**++ -** 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); -} - - -/* -**++ -** 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 ); - -} - - -/* -**++ -** 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); - - -} - - -/* -**++ -** 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 ); - -} - - -/* -**++ -** 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 ); - -} - - -/* -**++ -** 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); - - -} - - -/* -**++ -** 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; iaz_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"); - -} - - -/* -**++ -** 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"); -} - - - -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); - -} - - - -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); - -} - - - -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); -} - - - -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); -} - - - -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*"; - } -} - - - diff --git a/cde/osf/uil/XmAppl.uil b/cde/osf/uil/XmAppl.uil deleted file mode 100644 index 1237d7bf..00000000 --- a/cde/osf/uil/XmAppl.uil +++ /dev/null @@ -1,88 +0,0 @@ -! -! @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; diff --git a/cde/osf/uil/libUil.elist b/cde/osf/uil/libUil.elist deleted file mode 100644 index 0d373a95..00000000 --- a/cde/osf/uil/libUil.elist +++ /dev/null @@ -1,507 +0,0 @@ -/* $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 diff --git a/cde/osf/wml/Imakefile b/cde/osf/wml/Imakefile deleted file mode 100644 index b5258aee..00000000 --- a/cde/osf/wml/Imakefile +++ /dev/null @@ -1,103 +0,0 @@ -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) diff --git a/cde/osf/wml/README b/cde/osf/wml/README deleted file mode 100644 index 1dd981f8..00000000 --- a/cde/osf/wml/README +++ /dev/null @@ -1,416 +0,0 @@ -/* $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 = - o SuperClass = - WidgetClass = - o Resources { }; - o Controls { - 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: - - 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: - ':' class_type class_definition - -class_type: - 'MetaClass' | 'Widget' | 'Gadget' - -class_definition: - - | '{' '}' - | '{' class_attribute_list '}' - -class_attribute_list: - class_attribute_name '=' ';' - | 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: - - '{' '}' - '{' class_resource_list '}' - -class_resource_list: - class_resource_element - | class_resource_list class_resource_element - -class_resource_element: - class_resource_attributes ';' - -class_resource_attributes: - - '{' '}' ';' - '{' 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 '=' ';' - | 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: - - | '{' '}' ';' - | '{' class_controls_list '}' - -class_controls_list: - class_controls_element - class_controls_list class_controls_element - -class_controls_element: - ; - -resource_statement: - ':' resource_type resource_definition - -resource_type: - 'Argument' | 'Reason' | 'Constraint' | 'SubResource' - -resource_definition: - - '{' '}' - '{' resource_attribute_list '}' - -resource_attribute_list: - resource_attribute - resource_attribute_list resource_attribute - -resource_attribute: - resource_attribute_name '=' ';' - -resource_attribute_name: - 'Type' | 'ResourceLiteral' | 'Alias' | 'Related' | 'Default' | - 'DocName' - -datatype_statement: - datatype_definition - -datatype_definition: - - | '{' '}' - | '{' datatype_attribute_list '}' - -datatype_attribute_list: - datatype_attribuute - datatype_attribute_list datatype_attribute - -datatype_attribute: - datatype-attribute_name '=' ';' - -datatype_attribute_name: - 'Alias' | 'DocName' - -control_list_statement: - control_list_definition - -control_list_definition: - - '{' '}' - '{' control_list_controls_list '}' - -control_list_controls_list: - control_list_control - control_list_controls_list control_list_control - -control_list_control: - ';' diff --git a/cde/osf/wml/Uil.y b/cde/osf/wml/Uil.y deleted file mode 100644 index 14d8c8e6..00000000 --- a/cde/osf/wml/Uil.y +++ /dev/null @@ -1,1404 +0,0 @@ -/* - * @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 - -%% - - - -/* -** 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 - ; - - - -/* 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 - ; - - -/* 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; } -*/ - ; - - - -/* 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 ); } - ; - - - -/* Directives. */ - -/* Include Directive */ - -include_directive - : INCLUDE UILFILE character_8_value SEMICOLON { sar_include_file (&$3, &$1, &$4); } - | error { lex_issue_error (SEMICOLON); } SEMICOLON - ; - - - -/* 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; } - ; - - - - -/* 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; } - ; - - - -/* 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; } - ; - - - -/* 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 - ; - - - -/* 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; -} - - - diff --git a/cde/osf/wml/UilDBDef.h b/cde/osf/wml/UilDBDef.h deleted file mode 100644 index 40258dbc..00000000 --- a/cde/osf/wml/UilDBDef.h +++ /dev/null @@ -1,447 +0,0 @@ -/* - * 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 - - - -/* -** 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 */ diff --git a/cde/osf/wml/motif.wml b/cde/osf/wml/motif.wml deleted file mode 100644 index bf66ea0a..00000000 --- a/cde/osf/wml/motif.wml +++ /dev/null @@ -1,5233 +0,0 @@ -! @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; - -! -! 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; }; - -! -! 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; }; - - -! 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; - }; - - - -! 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"; }; - - - -! 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"; }; - - - -! Immediate subclasses of RectObj - -Class - XmGadget : MetaClass - { - SuperClass = RectObj; - Resources - { - ! new resources - XmNbackground; - XmNhelpCallback; - XmNhighlightOnEnter; - XmNhighlightThickness; - XmNnavigationType; - XmNshadowThickness; - XmNtraversalOn; - XmNunitType; - XmNuserData; - ! inherited resources - }; - }; - - - -! 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 - { }; - - -! 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"; }; - - - -! 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; - }; - }; - - -! 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"; }; - - -! 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"; }; - - -! 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; - }; - }; - - -! 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"; }; - - -! 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 - { }; - - -! 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"; }; - - -! 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"; }; - - -! 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"; }; - - -! Immediate subclasses of TransientShell - -Class - XmDialogShell : Widget - { - SuperClass = TransientShell; - ConvenienceFunction = XmCreateDialogShell; - Resources - { - ! new resources - ! inherited resources - XmNdeleteResponse { Default = "XmUNMAP"; }; - }; - Controls - { - ManagerWidgets; - }; - }; - - -! 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; - }; - }; - - -! 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; - }; - }; - - - -! 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; - }; - }; - - - -! 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 -! - - -! 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"; }; - - -! 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; - }; - }; - - - -! 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; - }; - }; - - - -! 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; - }; - }; - - - -! 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; - }; - }; - - - -! 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; - }; - }; - - -! 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 = "."; }; - - -! 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"; }; diff --git a/cde/osf/wml/wml.c b/cde/osf/wml/wml.c deleted file mode 100644 index a61de753..00000000 --- a/cde/osf/wml/wml.c +++ /dev/null @@ -1,271 +0,0 @@ -/* - * 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 -#else -#include -#endif -#include - - -/* - * 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; - - - - -/* - * 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); - -} - - -/* - * 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); -} diff --git a/cde/osf/wml/wml.h b/cde/osf/wml/wml.h deleted file mode 100644 index 574c2098..00000000 --- a/cde/osf/wml/wml.h +++ /dev/null @@ -1,708 +0,0 @@ -/* - * 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 -#else -#include -#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 - - - -/* - * 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; - - - -/* - * 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; - - - -/* - * 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; - - - -/* - * 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 (); diff --git a/cde/osf/wml/wmldbcreate.c b/cde/osf/wml/wmldbcreate.c deleted file mode 100644 index 7bff660e..00000000 --- a/cde/osf/wml/wmldbcreate.c +++ /dev/null @@ -1,686 +0,0 @@ -/* - * 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 -#ifndef X_NOT_STDC_ENV -#include -#endif - -#include -#include -#include - -#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
- - - -/* - * 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]; - -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); -} - - -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); - } - - - -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); - } - - - -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]); - } - } -} - - -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 -#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; - } diff --git a/cde/osf/wml/wmlouth.c b/cde/osf/wml/wmlouth.c deleted file mode 100644 index 59f44107..00000000 --- a/cde/osf/wml/wmlouth.c +++ /dev/null @@ -1,1964 +0,0 @@ -/* - * 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 -#endif -#include - - -/* - * 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; - - - -/* - * 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 (); - -} - - - -/* - * 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__object - * is widget class name in lexicographic order - * gadgets are not include. - * - * bit masks for table access - * - * sym_k__reason - * literals specifying all reasons, lexicographically ordered - * - * sym_k__arg - * literals for all arguments, lexicographically ordered. - * Constraints are included, and ordered with the arguments. - * - * sym_k__child - * literals for all automatic children, lexicographically ordered. - * - * sym_k__enumset - * literals naming each enumeration set, lexicographically ordered - * - * Fixed literals naming character set character sizes - * sym_k__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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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); - -} - - - -/* - * Routine to write out UilSymChCl.h - * - * A table of classes accessed by child type (sym_k__child, in - * the form - * ... - * sym_k__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 ; ndxcnt ; 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); - -} - - -/* - * Routine to write out UilSymArTy.h - * - * A table of data types accessed by argument type (sym_k__arg, in - * the form - * ... - * sym_k__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 ; ndxcnt ; 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); - -} - - - -/* - * 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 ; ndxcnt ; 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); - -} - - - -/* - * Routine to write out UilUrmClas.h - * - * Table of convenience function names indexed by the sym_k_ literal - * for both widgets and gadgets - * Table of resource names indexed by the sym_k__arg and - * sym_k__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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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); - -} - - - -/* - * 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 ; ndxcnt ; 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); - -} - - - -/* - * 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 ; resndxcnt ; 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 ; clsndxcnt ; 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 ; resndxcnt ; 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); - -} - - - -/* - * 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 ; resndxcnt ; 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 ; clsndxcnt ; 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 ; resndxcnt ; 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); - -} - - -/* - * 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 ; childndxcnt ; 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 ; clsndxcnt ; 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 ; childndxcnt ; 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); - -} - - -/* - * 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 ; ctlndxcnt ; 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 ; clsndxcnt ; 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 ; ctlndxcnt ; 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); - -} - - - -/* - * 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; - -} - - - -/* - * 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\ - \"\",\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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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); - -} - - - -/* - * 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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); - -} - - - -/* - * 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\ - \"\",\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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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_ndxalias_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 ; ndxcnt ; 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_ndxalias_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); - -} - - diff --git a/cde/osf/wml/wmloutkey.c b/cde/osf/wml/wmloutkey.c deleted file mode 100644 index 10bb1818..00000000 --- a/cde/osf/wml/wmloutkey.c +++ /dev/null @@ -1,834 +0,0 @@ -/* - * 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 -#include -#endif -#include - - -/* - * 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]; - - - -/* - * Output control routine - */ - -void wmlOutputKeyWordFiles () - -{ - -wmlKeyWBuildTables (); -wmlOutputUilKeyTab (); -wmlOutputUilTokName (); - -} - - - -/* - * 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 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); - -} - - - -/* - * 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; - -} - - - -/* - * 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 ; ndxcnt ; ndx++ ) - { - clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr; - synobj = clsobj->syndef; - wmlKeyWMakeTokens (synobj->name, WmlTokenClassClass, (ObjectPtr)clsobj); - } - -} - - - -/* - * 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 ; ndxcnt ; ndx++ ) - { - resobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr; - synobj = resobj->syndef; - wmlKeyWMakeTokens (synobj->name, WmlTokenClassArgument, (ObjectPtr)resobj); - for ( alias_ndx=0 ; alias_ndxalias_cnt ; alias_ndx++ ) - wmlKeyWMakeTokens (synobj->alias_list[alias_ndx], - WmlTokenClassArgument, - (ObjectPtr)resobj); - } - -} - - - -/* - * 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 ; ndxcnt ; ndx++ ) - { - resobj = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[ndx].objptr; - synobj = resobj->syndef; - wmlKeyWMakeTokens (synobj->name, WmlTokenClassReason, (ObjectPtr)resobj); - for ( alias_ndx=0 ; alias_ndxalias_cnt ; alias_ndx++ ) - wmlKeyWMakeTokens (synobj->alias_list[alias_ndx], - WmlTokenClassReason, - (ObjectPtr)resobj); - } - -} - - -/* - * 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 ; ndxcnt ; ndx++ ) - { - childobj = (WmlChildDefPtr) wml_obj_child_ptr->hvec[ndx].objptr; - synobj = childobj->syndef; - wmlKeyWMakeTokens (synobj->name, WmlTokenClassChild, (ObjectPtr)childobj); - } - -} - - - -/* - * 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 ; ndxcnt ; ndx++ ) - { - csobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr; - synobj = csobj->syndef; - wmlKeyWMakeTokens (synobj->name, WmlTokenClassCharset, (ObjectPtr)csobj); - for ( alias_ndx=0 ; alias_ndxalias_cnt ; alias_ndx++ ) - wmlKeyWMakeTokens (synobj->alias_list[alias_ndx], - WmlTokenClassCharset, - (ObjectPtr)csobj); - } - -} - - - -/* - * 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 ; ndxcnt ; ndx++ ) - { - esobj = (WmlEnumValueDefPtr) wml_obj_enumval_ptr->hvec[ndx].objptr; - synobj = esobj->syndef; - wmlKeyWMakeTokens (synobj->name, WmlTokenClassEnumval, (ObjectPtr)esobj); - } - -} - - - -/* - * 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); -} - - -/* - * 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); - -} - - - -/* - * 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 ; ndxcnt ; 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; - } - -} - - - -/* - * 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; - } - -} - - - -/* - * 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; - } - -} - - - -/* - * 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; - } - -} - - - -/* - * 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 ; ndxtoken); - else - fprintf (outfil, " \"UNKNOWN_TOKEN\",\n"); - } - -/* - * close the output file - */ -fprintf (outfil, canned2, grtok_max_val+1); -printf ("\nCreated UilTokName.h"); -fclose (outfil); - -} diff --git a/cde/osf/wml/wmloutmm.c b/cde/osf/wml/wmloutmm.c deleted file mode 100644 index 69fc7040..00000000 --- a/cde/osf/wml/wmloutmm.c +++ /dev/null @@ -1,332 +0,0 @@ -/* - * 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 -#endif -#include - - -/* - * 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; - - - -/* - * Output control routine, which simply outputs each .mm file in turn. - */ - -void wmlOutputMmFiles () - -{ - -wmlOutputWmlUilMm (); - -} - - - -/* - * 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 ; ndxcnt ; 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); - -} - - - -/* - * 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 ( rsnndxcnt || ctlndxcnt ) - { - 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); - -} - - - diff --git a/cde/osf/wml/wmloutp1.c b/cde/osf/wml/wmloutp1.c deleted file mode 100644 index 300dadbb..00000000 --- a/cde/osf/wml/wmloutp1.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * 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; - -} - diff --git a/cde/osf/wml/wmlparse.y b/cde/osf/wml/wmlparse.y deleted file mode 100644 index 8a4f3120..00000000 --- a/cde/osf/wml/wmlparse.y +++ /dev/null @@ -1,728 +0,0 @@ -/* - * @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 /* 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 - -%% - - -/* - * 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 - ; - - - -/* - * 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 - ; - - - -/* - * 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; } - ; - - -/* - * The CHILD statement - */ -child_statement - : name COLON STRING - { wmlCreateChild(yynameval, yystringval); } - ; - - -/* - * 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; } - ; - - - -/* - * 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 - ; - - - -/* - * 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 - ; - - - -/* - * 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; } - ; - - - -/* - * 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; } - - - -/* - * 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" - diff --git a/cde/osf/wml/wmlresolve.c b/cde/osf/wml/wmlresolve.c deleted file mode 100644 index 8dad4a1b..00000000 --- a/cde/osf/wml/wmlresolve.c +++ /dev/null @@ -1,1829 +0,0 @@ -/* - * 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 -#endif -#include - -/* - * 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 (); - - - -/* - * 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 (); - -} - - - -/* - * 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(); - -} - - - -/* - * 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 ; ndxcnt ; 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 - */ - - } - -} - - -/* - * 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 ; ndxcnt ; 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 ; ndxcnt ; ndx++ ) - { - newobj = (WmlChildDefPtr) wml_obj_child_ptr->hvec[ndx].objptr; - newobj->sym_code = code; - code += 1; - } - -} - - - -/* - * 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; ndx++ ) - { - newobj = (WmlEnumValueDefPtr) wml_obj_enumval_ptr->hvec[ndx].objptr; - newobj->sym_code = code; - code += 1; - } - -} - - - -/* - * 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 ; ndxcnt ; 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 ; ndxcnt ; 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; - } - } - -} - - - -/* - * 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 ; ndxcnt ; 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 ; ndxcnt ; ndx++ ) - { - newobj = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[ndx].objptr; - newobj->sym_code = code; - code += 1; - } - -} - - - -/* - * 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 ; ndxcnt ; 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 ; ndxcnt ; ndx++ ) - { - newobj = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr; - newobj->sym_code = code; - code += 1; - } - -} - - - -/* - * 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 ; ndxcnt ; 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; - } - } -} - - - -/* - * 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 ; ndxcnt ; 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 ; ndxcnt ; ndx++ ) - { - newobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr; - newobj->sym_code = code; - code += 1; - } - -} - - - -/* - * 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 ; ndxcnt ; 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; - } - } - -} - - - -/* - * 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 ; ndxcnt ; 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 ; ndxcnt ; ndx++ ) - { - newobj = (WmlCharSetDefPtr) wml_obj_charset_ptr->hvec[ndx].objptr; - newobj->sym_code = code; - code += 1; - } - -} - - - -/* - * 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; 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 ; ndxcnt ; ndx++ ) - { - clsobj = (WmlClassDefPtr) wml_obj_allclass_ptr->hvec[ndx].objptr; - wmlResolveClassInherit (clsobj); - } - -} - - - -/* - * 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; - -} - - - -/* - * 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; - -} - - -/* - * 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; - -} - - - -/* - * 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 ; ndxcnt ; 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); - -} - - - -/* - * 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 ; ndxcnt ; ndx++ ) - { - ctrlobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr; - if ( ctrlobj->ref_ptr == NULL ) continue; - fprintf (outfil, "\n %s", ctrlobj->syndef->name); - } - -} - - - -/* - * 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 ; ndxcnt ; 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 ; ndxcnt ; 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; - } - } - -} - - - -/* - * 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 ; ndxcnt ; 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; - } -} - - - -/* - * 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; - -} - - - -/* - * 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 ; ndxcnt ; ndx++ ) - { - mrkcls = (WmlClassDefPtr) wml_obj_allclass_ptr->hvec[ndx].objptr; - mrkcls->ref_ptr = NULL; - } -for ( ndx=0 ; ndxcnt ; ndx++ ) - { - mrkres = (WmlResourceDefPtr) wml_obj_reason_ptr->hvec[ndx].objptr; - mrkres->ref_ptr = NULL; - } -for ( ndx=0 ; ndxcnt ; ndx++ ) - { - mrkres = (WmlResourceDefPtr) wml_obj_arg_ptr->hvec[ndx].objptr; - mrkres->ref_ptr = NULL; - } -for ( ndx=0 ; ndxcnt ; ndx++ ) - { - mrkcld = (WmlChildDefPtr) wml_obj_child_ptr->hvec[ndx].objptr; - mrkcld->ref_ptr = NULL; - } - -} - - - -/* - * 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; - -} diff --git a/cde/osf/wml/wmlsynbld.c b/cde/osf/wml/wmlsynbld.c deleted file mode 100644 index ccb85c88..00000000 --- a/cde/osf/wml/wmlsynbld.c +++ /dev/null @@ -1,1299 +0,0 @@ -/* - * 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 -#endif -#include - - -/* - * 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; - - - -/* - * 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; - -} - - - -/* - * 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; - -} - - - -/* - * 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; - -} - - -/* - * 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; - -} - - - -/* - * 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; - -} - - - -/* - * 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; - -} - - - -/* - * 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; - -} - - - -/* - * 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; - -} - - - -/* - * 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; -} - - - -/* - * 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; - -} - - - -/* - * 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; - -} - - -/* - * 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; - -} - - - -/* - * 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; - -} - - - - -/* - * 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; -} - - - -/* - * 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; -} - - - -/* - * 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; - -} - - - -/* - * 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; - -} - - - -/* - * 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; - -} - - - -/* - * 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; -} - - - -/* - * 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; - -} diff --git a/cde/osf/wml/wmluiltok.l b/cde/osf/wml/wmluiltok.l deleted file mode 100644 index f5d38baa..00000000 --- a/cde/osf/wml/wmluiltok.l +++ /dev/null @@ -1,194 +0,0 @@ -%{ -/* - * @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 -#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 - -#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; jname) > 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 -#include -#endif -#include - - -/* - * 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; - -} - - - -/* - * 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 ; ndxcnt = 0; -listptr->max = size; -listptr->ordered = is_ordered; -listptr->hvec = (ObjectHandleDefPtr) malloc(size*sizeof(ObjectHandleDef)); - -return; - -} - - - -/* - * 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; - -} - - - -/* - * 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 ; ndxcnt ; ndx++ ) - { - free (listptr->hvec[ndx].objname); - listptr->hvec[ndx].objname = NULL; - } -listptr->cnt = 0; - -return; - -} - - - -/* - * 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 ; ndxcnt ; ndx++ ) - if ( strcmp(name,listptr->hvec[ndx].objname) == 0 ) - return ndx; - return -1; - } - -} - - - -/* - * 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; - } - -} - - -/* - * 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; -} - - -/* - * 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; - -} - - -/* - * 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; - -} - - diff --git a/cde/osf/xmbind/0040.xmbind b/cde/osf/xmbind/0040.xmbind deleted file mode 100755 index 6aec74fd..00000000 --- a/cde/osf/xmbind/0040.xmbind +++ /dev/null @@ -1,38 +0,0 @@ -#!/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 ##################### diff --git a/cde/osf/xmbind/Imakefile b/cde/osf/xmbind/Imakefile deleted file mode 100644 index 28c73eb8..00000000 --- a/cde/osf/xmbind/Imakefile +++ /dev/null @@ -1,36 +0,0 @@ -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) - diff --git a/cde/osf/xmbind/README b/cde/osf/xmbind/README deleted file mode 100644 index 8f853d0a..00000000 --- a/cde/osf/xmbind/README +++ /dev/null @@ -1,11 +0,0 @@ -/* $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. diff --git a/cde/osf/xmbind/xmbind.c b/cde/osf/xmbind/xmbind.c deleted file mode 100644 index fb1345d3..00000000 --- a/cde/osf/xmbind/xmbind.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * 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 -#include - -/* 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); -} - diff --git a/cde/util/progs/lndir.c b/cde/util/progs/lndir.c deleted file mode 100644 index 8464b40c..00000000 --- a/cde/util/progs/lndir.c +++ /dev/null @@ -1,242 +0,0 @@ -/* - * 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 -#include -#include -#include -#include - -#ifndef X_NOT_POSIX -#include -#else -#ifdef SYSV -#include -#else -#ifdef USG -#include -#else -#include -#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)); -} -- 2.25.1