123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 |
- /*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these librararies and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
- /*
- * @OSF_COPYRIGHT@
- * COPYRIGHT NOTICE
- * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
- * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
- * the full copyright text.
- */
- /*
- * HISTORY
- */
- #ifdef REV_INFO
- #ifndef lint
- static char rcsid[] = "$XConsortium: wmloutmm.c /main/9 1995/08/29 11:10:59 drk $"
- #endif
- #endif
- /*
- * (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
- /*
- * This module contains routines responsible for writing the .mm files
- * produced by WML. All files are written into the current directory.
- *
- * Input:
- * The resolved objects
- *
- * Output:
- * wml-uil.mm
- *
- */
- #include "wml.h"
- #if defined(__STDC__)
- #include <string.h>
- #endif
- #include <stdio.h>
- /*
- * Routines used only in this module
- */
- void wmlOutputWmlUilMm ();
- void wmlOutputWmlUilMmClass ();
- /*
- * globals
- */
- int tabno = 1; /* table number */
- /*
- * lists re-used repeatedly to order lists for printing
- */
- DynamicHandleListDef mm_arg;
- DynamicHandleListDefPtr mm_arg_ptr = &mm_arg;
- DynamicHandleListDef mm_rsn;
- DynamicHandleListDefPtr mm_rsn_ptr = &mm_rsn;
- DynamicHandleListDef mm_ctl;
- DynamicHandleListDefPtr mm_ctl_ptr = &mm_ctl;
- /*
- * 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 ; ndx<wml_obj_class_ptr->cnt ; ndx++ )
- {
- clsobj = (WmlClassDefPtr) wml_obj_class_ptr->hvec[ndx].objptr;
- wmlOutputWmlUilMmClass (outfil, clsobj, clsobj->syndef->name);
- }
- /*
- * close the output file
- */
- printf ("\nCreated wml-uil.mm");
- fclose (outfil);
- }
- /*
- * Routine to write a table for a class entry
- */
- void wmlOutputWmlUilMmClass (outfil, clsobj, name)
- FILE *outfil;
- WmlClassDefPtr clsobj;
- char *name;
- {
- char *canned1 =
- ".bp\n\
- .ps 12\n";
- char *canned2 =
- ".ps 10\n\
- .vs 12\n\
- .LP\n\
- .TS H\n\
- tab(@);\n\
- lB lB\n\
- l l.\n\
- _\n\
- .sp 6p\n\
- Controls@Reasons\n\
- .sp 6p\n\
- _\n\
- .sp 6p\n\
- .TH\n";
- char *canned3 =
- ".TE\n\
- .TS H\n\
- tab(@);\n\
- lB lB lB\n\
- l l l.\n\
- _\n\
- .sp 6p\n\
- UIL Argument Name@Argument Type@Default Value\n\
- .sp 6p\n\
- _\n\
- .sp 6p\n\
- .TH\n";
- char *canned4 =
- ".TE\n";
- WmlClassResDefPtr argref; /* current argument reference */
- WmlClassResDefPtr rsnref; /* current reason reference */
- WmlClassCtrlDefPtr ctlref; /* current controls reference */
- int argndx; /* to access ordered vector */
- int rsnndx; /* to access ordered vector */
- int ctlndx; /* to access ordered vector */
- /*
- * Write out header information
- */
- fprintf (outfil, canned1);
- fprintf (outfil, "%s\n", name);
- fprintf (outfil, canned2);
- /*
- * Alphabetize the controls, reason, and argument lists
- */
- wmlClearHList (mm_arg_ptr);
- wmlClearHList (mm_rsn_ptr);
- wmlClearHList (mm_ctl_ptr);
- argref = clsobj->arguments;
- while ( argref!= NULL )
- {
- while ( argref != NULL && argref->exclude == WmlAttributeTrue )
- argref = argref->next;
- if ( argref != NULL )
- {
- wmlInsertInHList (mm_arg_ptr,
- argref->act_resource->syndef->name,
- (ObjectPtr)argref);
- argref = argref->next;
- }
- }
- rsnref = clsobj->reasons;
- while ( rsnref!=NULL )
- {
- while ( rsnref != NULL && rsnref->exclude == WmlAttributeTrue )
- rsnref = rsnref->next;
- if ( rsnref != NULL )
- {
- wmlInsertInHList (mm_rsn_ptr,
- rsnref->act_resource->syndef->name,
- (ObjectPtr)rsnref);
-
- rsnref = rsnref->next;
- }
- }
- ctlref = clsobj->controls;
- while ( ctlref != NULL )
- {
- wmlInsertInHList (mm_ctl_ptr,
- ctlref->ctrl->syndef->name,
- (ObjectPtr)ctlref);
- ctlref = ctlref->next;
- }
- /*
- * Write out the controls and reason table.
- */
- rsnndx = 0;
- ctlndx = 0;
- if ( mm_ctl_ptr->cnt == 0 )
- fprintf (outfil, "No children are supported");
- while ( rsnndx<mm_rsn_ptr->cnt || ctlndx<mm_ctl_ptr->cnt )
- {
- if ( ctlndx < mm_ctl_ptr->cnt )
- {
- ctlref = (WmlClassCtrlDefPtr) mm_ctl_ptr->hvec[ctlndx].objptr;
- fprintf (outfil, "%s@",
- ctlref->ctrl->syndef->name);
- ctlndx += 1;
- }
- else
- fprintf (outfil, "@");
-
- if ( rsnndx < mm_rsn_ptr->cnt )
- {
- rsnref = (WmlClassResDefPtr) mm_rsn_ptr->hvec[rsnndx].objptr;
- fprintf (outfil, "%s\n",
- rsnref->act_resource->syndef->name);
- rsnndx += 1;
- }
- else
- fprintf (outfil, "\n");
- }
- fprintf (outfil, canned3);
- /*
- * Write out the argument table
- */
- argndx = 0;
- while ( argndx < mm_arg_ptr->cnt )
- {
- argref = (WmlClassResDefPtr) mm_arg_ptr->hvec[argndx].objptr;
- fprintf (outfil, "%s@%s@",
- argref->act_resource->syndef->name,
- argref->act_resource->dtype_def->syndef->name);
- if ( argref->dflt != NULL )
- {
- if ( strchr(argref->dflt,' ') != 0 )
- fprintf (outfil, "T{\n%s\nT}\n",
- argref->dflt);
- else
- fprintf (outfil, "%s\n",
- argref->dflt);
- }
- else
- {
- if (argref->act_resource->syndef->dflt != NULL) {
- if ( strchr(argref->act_resource->syndef->dflt,' ') != 0 )
- fprintf (outfil, "T{\n%s\nT}\n",
- argref->act_resource->syndef->dflt);
- else
- fprintf (outfil, "%s\n",
- argref->act_resource->syndef->dflt);
- }
- else
- fprintf (outfil, " \n");
- }
- argndx += 1;
- }
- fprintf (outfil, canned4);
- }
|