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