|
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[] = "$TOG: wmldbcreate.c /main/8 1997/04/14 12:55:30 dbl $"
|
|
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 is the program creates binary databases from WML output.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <stdio.h>
|
|
Packit |
b099d7 |
#ifndef X_NOT_STDC_ENV
|
|
Packit |
b099d7 |
#include <stdlib.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <Mrm/MrmWidget.h>
|
|
Packit |
b099d7 |
#include <Xm/Xm.h>
|
|
Packit |
b099d7 |
#include <Xm/MwmUtil.h>
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include
|
|
Packit |
b099d7 |
#include
|
|
Packit |
b099d7 |
#include
|
|
Packit |
b099d7 |
#include
|
|
Packit |
b099d7 |
#include
|
|
Packit |
b099d7 |
#include
|
|
Packit |
b099d7 |
#include
|
|
Packit |
b099d7 |
#include
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* User supplied widget public.h and/or private.h files are to be added here
|
|
Packit |
b099d7 |
* #ifdef for automatic use in uilwmdcreate script file
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* End of User supplied widget files
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include "UilDBDef.h"
|
|
Packit |
b099d7 |
#include "UilLexPars.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include "UilSymGen.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilSymArTy.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilSymRArg.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilSymArTa.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilSymReas.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilSymCtl.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilConst.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilSymNam.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilSymEnum.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilSymCSet.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilUrmClas.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilKeyTab.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilSymChCl.h" /* from WML */
|
|
Packit |
b099d7 |
#include "UilSymChTa.h" /* from WML */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void emit_globals();
|
|
Packit |
b099d7 |
void emit_header(_db_header_ptr header);
|
|
Packit |
b099d7 |
void emit_chars(int table_id);
|
|
Packit |
b099d7 |
void emit_ints_and_string( int table_id);
|
|
Packit |
b099d7 |
void emit_char_table( int table_id);
|
|
Packit |
b099d7 |
void emit_length_and_string( int table_id);
|
|
Packit |
b099d7 |
void emit_shorts( int table_id);
|
|
Packit |
b099d7 |
void emit_int_and_table_shorts( int table_id);
|
|
Packit |
b099d7 |
void emit_ints( int table_id);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FILE *bfile, *afile;
|
|
Packit |
b099d7 |
int DEBUG=FALSE;
|
|
Packit |
b099d7 |
char outfilename[80];
|
|
Packit |
b099d7 |
char debugfilename[80];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
int main(argc, argv)
|
|
Packit |
b099d7 |
int argc;
|
|
Packit |
b099d7 |
char **argv;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_db_header header;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
strcpy(outfilename, "motif.wmd");
|
|
Packit |
b099d7 |
strcpy(debugfilename, "motif.dbg");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (argc--, argv++; argc; argc--, argv++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (strcmp("-debug", *argv) == 0)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
DEBUG=TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if ((strcmp("-o", *argv) == 0))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
strcpy(outfilename, argv[1]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
bfile = fopen(outfilename, "w");
|
|
Packit |
b099d7 |
if (bfile == (FILE *) NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
printf("\nCouldnt't open %s", outfilename);
|
|
Packit |
b099d7 |
exit (1);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (DEBUG)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
afile = fopen(debugfilename, "w");
|
|
Packit |
b099d7 |
if (afile == (FILE *) NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
printf("\nCouldn't open %s", debugfilename);
|
|
Packit |
b099d7 |
exit (1);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
emit_globals();
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* UilConst
|
|
Packit |
b099d7 |
* UilSymArty
|
|
Packit |
b099d7 |
* UilSymCset - parts of it
|
|
Packit |
b099d7 |
* UilSymChCl
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
emit_chars(Constraint_Tab);
|
|
Packit |
b099d7 |
emit_chars(Argument_Type_Table_Value);
|
|
Packit |
b099d7 |
emit_chars(Charset_Wrdirection_Table);
|
|
Packit |
b099d7 |
emit_chars(Charset_Parsdirection_Table);
|
|
Packit |
b099d7 |
emit_chars(Charset_Charsize_Table);
|
|
Packit |
b099d7 |
emit_chars(Child_Class_Table);
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* UilKeyTab
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
emit_ints_and_string (Key_Table);
|
|
Packit |
b099d7 |
emit_ints_and_string (Key_Table_Case_Ins);
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* UilSymArTa
|
|
Packit |
b099d7 |
* UilSymCtl
|
|
Packit |
b099d7 |
* UilSymReas
|
|
Packit |
b099d7 |
* UilSymChTa
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
emit_char_table (Allowed_Argument_Table);
|
|
Packit |
b099d7 |
emit_char_table (Allowed_Control_Table);
|
|
Packit |
b099d7 |
emit_char_table (Allowed_Reason_Table);
|
|
Packit |
b099d7 |
emit_char_table (Allowed_Child_Table);
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* UilSymCset
|
|
Packit |
b099d7 |
* UilSymNam
|
|
Packit |
b099d7 |
* UilUrmClas
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
emit_length_and_string (Charset_Xmstring_Names_Table);
|
|
Packit |
b099d7 |
emit_length_and_string (Charset_Lang_Names_Table);
|
|
Packit |
b099d7 |
emit_length_and_string (Uil_Widget_Names);
|
|
Packit |
b099d7 |
emit_length_and_string (Uil_Argument_Names);
|
|
Packit |
b099d7 |
emit_length_and_string (Uil_Reason_Names);
|
|
Packit |
b099d7 |
emit_length_and_string (Uil_Enumval_names);
|
|
Packit |
b099d7 |
emit_length_and_string (Uil_Charset_Names);
|
|
Packit |
b099d7 |
emit_length_and_string (Uil_Widget_Funcs);
|
|
Packit |
b099d7 |
emit_length_and_string (Uil_Argument_Toolkit_Names);
|
|
Packit |
b099d7 |
emit_length_and_string (Uil_Reason_Toolkit_Names);
|
|
Packit |
b099d7 |
emit_length_and_string (Uil_Children_Names);
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* UilSymCset
|
|
Packit |
b099d7 |
* UilSymEnum
|
|
Packit |
b099d7 |
* UilSymRArg
|
|
Packit |
b099d7 |
* UilUrmClas
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
emit_shorts (Charset_Lang_Codes_Table);
|
|
Packit |
b099d7 |
emit_shorts (Argument_Enum_Set_Table);
|
|
Packit |
b099d7 |
emit_shorts (Related_Argument_Table);
|
|
Packit |
b099d7 |
emit_shorts (Uil_Gadget_Funcs);
|
|
Packit |
b099d7 |
emit_shorts (Uil_Urm_Nondialog_Class);
|
|
Packit |
b099d7 |
emit_shorts (Uil_Urm_Subtree_Resource);
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* UilSymEnum
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
emit_int_and_table_shorts(Enum_Set_Table);
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* UilSymEnum
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
emit_ints (Enumval_Values_Table);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
exit (0);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return 0; /* make compiler happy */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void emit_globals()
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_db_globals globals;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
globals.version = DB_Compiled_Version;
|
|
Packit |
b099d7 |
globals.uil_max_arg = uil_max_arg;
|
|
Packit |
b099d7 |
globals.uil_max_charset = uil_max_charset;
|
|
Packit |
b099d7 |
globals.charset_lang_table_max = charset_lang_table_max;
|
|
Packit |
b099d7 |
globals.uil_max_object = uil_max_object;
|
|
Packit |
b099d7 |
globals.uil_max_reason = uil_max_reason;
|
|
Packit |
b099d7 |
globals.uil_max_enumval = uil_max_enumval;
|
|
Packit |
b099d7 |
globals.uil_max_enumset = uil_max_enumset;
|
|
Packit |
b099d7 |
globals.key_k_keyword_count = key_k_keyword_count;
|
|
Packit |
b099d7 |
globals.key_k_keyword_max_length = key_k_keyword_max_length;
|
|
Packit |
b099d7 |
globals.uil_max_child = uil_max_child;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
fwrite (&globals, sizeof (_db_globals), 1, bfile);
|
|
Packit |
b099d7 |
if (DEBUG)
|
|
Packit |
b099d7 |
fprintf(afile, "%d %d %d %d %d %d %d %d %d %d ", globals.version,
|
|
Packit |
b099d7 |
globals.uil_max_arg, globals.uil_max_charset,
|
|
Packit |
b099d7 |
globals.charset_lang_table_max, globals.uil_max_object,
|
|
Packit |
b099d7 |
globals.uil_max_reason, globals.uil_max_enumval,
|
|
Packit |
b099d7 |
globals.uil_max_enumset, globals.key_k_keyword_count,
|
|
Packit |
b099d7 |
globals.key_k_keyword_max_length);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void emit_header(header)
|
|
Packit |
b099d7 |
_db_header_ptr header;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
fwrite (header, sizeof(_db_header), 1, bfile);
|
|
Packit |
b099d7 |
if (DEBUG)
|
|
Packit |
b099d7 |
fprintf(afile,
|
|
Packit |
b099d7 |
"\n\nTableId=%d, NumEntries=%d, TableSize=%d \n",
|
|
Packit |
b099d7 |
header->table_id, header->num_items, header->table_size);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void emit_chars(table_id)
|
|
Packit |
b099d7 |
int table_id;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_db_header header;
|
|
Packit |
b099d7 |
unsigned char *ptr;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (table_id)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
case Constraint_Tab:
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* NOTE: The first entry is not used but we copy it anyway
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
header.table_size = sizeof(constraint_tab_vec);
|
|
Packit |
b099d7 |
header.num_items = header.table_size;
|
|
Packit |
b099d7 |
header.table_id = Constraint_Tab;
|
|
Packit |
b099d7 |
ptr = constraint_tab;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Argument_Type_Table_Value:
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* NOTE: The first entry is not used but we copy it anyway
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
header.table_size = sizeof(argument_type_table_vec);
|
|
Packit |
b099d7 |
header.num_items = header.table_size;
|
|
Packit |
b099d7 |
header.table_id = Argument_Type_Table_Value;
|
|
Packit |
b099d7 |
ptr = argument_type_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Charset_Wrdirection_Table:
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* NOTE: The first entry is not used but we copy it anyway
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
header.table_size = sizeof(charset_wrdirection_table_vec);
|
|
Packit |
b099d7 |
header.num_items = header.table_size;
|
|
Packit |
b099d7 |
header.table_id = Charset_Wrdirection_Table;
|
|
Packit |
b099d7 |
ptr = charset_writing_direction_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Charset_Parsdirection_Table:
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* NOTE: The first entry is not used but we copy it anyway
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
header.table_size = sizeof(charset_parsdirection_table_vec);
|
|
Packit |
b099d7 |
header.num_items = header.table_size;
|
|
Packit |
b099d7 |
header.table_id = Charset_Parsdirection_Table;
|
|
Packit |
b099d7 |
ptr = charset_parsing_direction_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Charset_Charsize_Table:
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* NOTE: The first entry is not used but we copy it anyway
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
header.table_size = sizeof(charset_charsize_table_vec);
|
|
Packit |
b099d7 |
header.num_items = header.table_size;
|
|
Packit |
b099d7 |
header.table_id = Charset_Charsize_Table;
|
|
Packit |
b099d7 |
ptr = charset_character_size_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Child_Class_Table:
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* NOTE: The first entry is not used but we copy it anyway
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
header.table_size = sizeof(child_class_table_vec);
|
|
Packit |
b099d7 |
header.num_items = header.table_size;
|
|
Packit |
b099d7 |
header.table_id = Child_Class_Table;
|
|
Packit |
b099d7 |
ptr = child_class_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
emit_header(&header);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
fwrite (ptr, header.table_size, 1, bfile);
|
|
Packit |
b099d7 |
if (DEBUG)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for (i=0; i<=header.num_items; i++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
fprintf(afile, "%d ", ptr[i]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void emit_ints_and_string(table_id)
|
|
Packit |
b099d7 |
int table_id;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_db_header header;
|
|
Packit |
b099d7 |
key_keytable_entry_type *table;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (table_id)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* All tables are zero based unless otherwise noted
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
case Key_Table:
|
|
Packit |
b099d7 |
header.table_size = sizeof(key_table_vec);
|
|
Packit |
b099d7 |
header.num_items = key_k_keyword_count;
|
|
Packit |
b099d7 |
header.table_id = Key_Table;
|
|
Packit |
b099d7 |
table = key_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Key_Table_Case_Ins:
|
|
Packit |
b099d7 |
header.table_size = sizeof(key_table_case_ins_vec);
|
|
Packit |
b099d7 |
header.num_items = key_k_keyword_count;
|
|
Packit |
b099d7 |
header.table_id = Key_Table_Case_Ins;
|
|
Packit |
b099d7 |
table = key_table_case_ins;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
emit_header(&header);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
fwrite (table, header.table_size, 1, bfile);
|
|
Packit |
b099d7 |
for (i=0; i
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
fwrite (table[i].at_name, table[i].b_length + 1, 1, bfile);
|
|
Packit |
b099d7 |
if (DEBUG)
|
|
Packit |
b099d7 |
fprintf (afile, "%d %d %d %d %s", table[i].b_class, table[i].b_subclass,
|
|
Packit |
b099d7 |
table[i].b_length, table[i].b_token, table[i].at_name);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void emit_char_table(table_id)
|
|
Packit |
b099d7 |
int table_id;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned char **table;
|
|
Packit |
b099d7 |
_db_header header;
|
|
Packit |
b099d7 |
unsigned char *entry_vec;
|
|
Packit |
b099d7 |
int i, j;
|
|
Packit |
b099d7 |
int num_bits = (uil_max_object + 7) / 8;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (table_id)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* All tables are 1 based unless otherwise specified
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
case Allowed_Argument_Table:
|
|
Packit |
b099d7 |
header.table_size = sizeof(allowed_argument_table_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_arg;
|
|
Packit |
b099d7 |
header.table_id = Allowed_Argument_Table;
|
|
Packit |
b099d7 |
table = allowed_argument_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Allowed_Control_Table:
|
|
Packit |
b099d7 |
header.table_size = sizeof(allowed_control_table_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_object;
|
|
Packit |
b099d7 |
header.table_id = Allowed_Control_Table;
|
|
Packit |
b099d7 |
table = allowed_control_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Allowed_Reason_Table:
|
|
Packit |
b099d7 |
header.table_size = sizeof(allowed_reason_table_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_reason;
|
|
Packit |
b099d7 |
header.table_id = Allowed_Reason_Table;
|
|
Packit |
b099d7 |
table = allowed_reason_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Allowed_Child_Table:
|
|
Packit |
b099d7 |
header.table_size = sizeof(allowed_child_table_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_child;
|
|
Packit |
b099d7 |
header.table_id = Allowed_Child_Table;
|
|
Packit |
b099d7 |
table = allowed_child_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
emit_header(&header);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i=1; i<=header.num_items; i++) /* First not used */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
entry_vec = table[i];
|
|
Packit |
b099d7 |
fwrite (entry_vec, sizeof (char) * num_bits, 1, bfile);
|
|
Packit |
b099d7 |
if (DEBUG)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for (j=0; j
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
fprintf (afile, "%d, ", entry_vec[j]);
|
|
Packit |
b099d7 |
}
|
|
Packit Service |
1f15c3 |
fprintf (afile, "\n");
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void emit_length_and_string(table_id)
|
|
Packit |
b099d7 |
int table_id;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_db_header header;
|
|
Packit |
b099d7 |
int *lengths;
|
|
Packit |
b099d7 |
char *string_table;
|
|
Packit |
b099d7 |
char **table;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (table_id)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* all the tables are 1 based unless otherwise documented
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
case Charset_Xmstring_Names_Table:
|
|
Packit |
b099d7 |
header.table_size = sizeof(charset_xmstring_names_table_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_charset;
|
|
Packit |
b099d7 |
header.table_id = Charset_Xmstring_Names_Table;
|
|
Packit |
b099d7 |
table = charset_xmstring_names_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Charset_Lang_Names_Table:
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* This table is 0 based
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
header.table_size = sizeof(charset_lang_names_table_vec);
|
|
Packit |
b099d7 |
header.num_items = charset_lang_table_max - 1;
|
|
Packit |
b099d7 |
header.table_id = Charset_Lang_Names_Table;
|
|
Packit |
b099d7 |
table = charset_lang_names_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Uil_Widget_Names:
|
|
Packit |
b099d7 |
header.table_size = sizeof(uil_widget_names_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_object;
|
|
Packit |
b099d7 |
header.table_id = Uil_Widget_Names;
|
|
Packit |
b099d7 |
table = uil_widget_names ;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Uil_Argument_Names:
|
|
Packit |
b099d7 |
header.table_size = sizeof(uil_argument_names_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_arg;
|
|
Packit |
b099d7 |
header.table_id = Uil_Argument_Names;
|
|
Packit |
b099d7 |
table = uil_argument_names;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Uil_Reason_Names:
|
|
Packit |
b099d7 |
header.table_size = sizeof(uil_reason_names_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_reason;
|
|
Packit |
b099d7 |
header.table_id = Uil_Reason_Names;
|
|
Packit |
b099d7 |
table = uil_reason_names;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Uil_Enumval_names:
|
|
Packit |
b099d7 |
header.table_size = sizeof(uil_enumval_names_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_enumval;
|
|
Packit |
b099d7 |
header.table_id = Uil_Enumval_names;
|
|
Packit |
b099d7 |
table = uil_enumval_names;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Uil_Charset_Names:
|
|
Packit |
b099d7 |
header.table_size = sizeof(uil_charset_names_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_charset;
|
|
Packit |
b099d7 |
header.table_id = Uil_Charset_Names;
|
|
Packit |
b099d7 |
table = uil_charset_names;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Uil_Widget_Funcs:
|
|
Packit |
b099d7 |
header.table_size = sizeof(uil_widget_funcs_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_object;
|
|
Packit |
b099d7 |
header.table_id = Uil_Widget_Funcs;
|
|
Packit |
b099d7 |
table = uil_widget_funcs;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Uil_Argument_Toolkit_Names:
|
|
Packit |
b099d7 |
header.table_size = sizeof(uil_argument_toolkit_names_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_arg;
|
|
Packit |
b099d7 |
header.table_id = Uil_Argument_Toolkit_Names;
|
|
Packit |
b099d7 |
table = uil_argument_toolkit_names;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Uil_Reason_Toolkit_Names:
|
|
Packit |
b099d7 |
header.table_size = sizeof(uil_reason_toolkit_names_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_reason;
|
|
Packit |
b099d7 |
header.table_id = Uil_Reason_Toolkit_Names;
|
|
Packit |
b099d7 |
table = uil_reason_toolkit_names;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Uil_Children_Names:
|
|
Packit |
b099d7 |
header.table_size = sizeof(uil_child_names_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_child;
|
|
Packit |
b099d7 |
header.table_id = Uil_Children_Names;
|
|
Packit |
b099d7 |
table = uil_child_names ;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
emit_header(&header);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
lengths = (int *) malloc (sizeof (int) * (header.num_items + 1));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i=0; i<=header.num_items; i++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (table[i] != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Add one to the length for the null terminator
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
lengths[i] = strlen(table[i]) + 1;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
lengths[i] = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (DEBUG)
|
|
Packit |
b099d7 |
fprintf (afile, "%d ", lengths[i]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
fwrite (lengths, sizeof (int) * (header.num_items + 1), 1, bfile);
|
|
Packit |
b099d7 |
for (i=0; i<=header.num_items; i++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (lengths[i])
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* assumed lengths[i] = lengths[i] * sizeof(char)
|
|
Packit |
b099d7 |
* Add one for the null terminator
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
fwrite (table[i], lengths[i] + 1, 1, bfile);
|
|
Packit |
b099d7 |
if (DEBUG)
|
|
Packit |
b099d7 |
fprintf (afile, "%s ", table[i]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
free (lengths);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void emit_shorts(table_id)
|
|
Packit |
b099d7 |
int table_id;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_db_header header;
|
|
Packit |
b099d7 |
unsigned short int *ptr;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (table_id)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* All tables are 1 based unless otherwise noted
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
case Charset_Lang_Codes_Table:
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* 0 based table
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
header.table_size = sizeof(charset_lang_codes_table_vec);
|
|
Packit |
b099d7 |
header.num_items = charset_lang_table_max - 1;
|
|
Packit |
b099d7 |
header.table_id = Charset_Lang_Codes_Table;
|
|
Packit |
b099d7 |
ptr = charset_lang_codes_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Argument_Enum_Set_Table:
|
|
Packit |
b099d7 |
header.table_size = sizeof(argument_enumset_table_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_arg;
|
|
Packit |
b099d7 |
header.table_id = Argument_Enum_Set_Table;
|
|
Packit |
b099d7 |
ptr = argument_enumset_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Related_Argument_Table:
|
|
Packit |
b099d7 |
header.table_size = sizeof(related_argument_table_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_arg;
|
|
Packit |
b099d7 |
header.table_id = Related_Argument_Table;
|
|
Packit |
b099d7 |
ptr = related_argument_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Uil_Gadget_Funcs:
|
|
Packit |
b099d7 |
header.table_size = sizeof(uil_gadget_variants_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_object;
|
|
Packit |
b099d7 |
header.table_id = Uil_Gadget_Funcs;
|
|
Packit |
b099d7 |
ptr = uil_gadget_variants;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Uil_Urm_Nondialog_Class:
|
|
Packit |
b099d7 |
header.table_size = sizeof(uil_urm_nondialog_class_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_object;
|
|
Packit |
b099d7 |
header.table_id = Uil_Urm_Nondialog_Class;
|
|
Packit |
b099d7 |
ptr = uil_urm_nondialog_class;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case Uil_Urm_Subtree_Resource:
|
|
Packit |
b099d7 |
header.table_size = sizeof(uil_urm_subtree_resource_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_object;
|
|
Packit |
b099d7 |
header.table_id = Uil_Urm_Subtree_Resource;
|
|
Packit |
b099d7 |
ptr = uil_urm_subtree_resource;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
emit_header(&header);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
fwrite (ptr, header.table_size, 1, bfile);
|
|
Packit |
b099d7 |
if (DEBUG)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for (i=0; i
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
fprintf(afile, "%d ", ptr[i]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void emit_int_and_table_shorts(table_id)
|
|
Packit |
b099d7 |
int table_id;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_db_header header;
|
|
Packit |
b099d7 |
UilEnumSetDescDef *table;
|
|
Packit |
b099d7 |
int j, i;
|
|
Packit |
b099d7 |
unsigned short int *value_vec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (table_id)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* All tables are 1 based unless otherwise noted
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
case Enum_Set_Table:
|
|
Packit |
b099d7 |
header.table_size = sizeof(enum_set_table_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_enumset;
|
|
Packit |
b099d7 |
header.table_id = Enum_Set_Table;
|
|
Packit |
b099d7 |
table = enum_set_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
emit_header(&header);
|
|
Packit |
b099d7 |
fwrite (table, header.table_size, 1, bfile);
|
|
Packit |
b099d7 |
for (i=0; i<=header.num_items; i++) /* first is not used */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (table[i].values_cnt)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
fwrite (table[i].values, sizeof (short) * table[i].values_cnt, 1, bfile);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void emit_ints(table_id)
|
|
Packit |
b099d7 |
int table_id;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_db_header header;
|
|
Packit |
b099d7 |
int *ptr;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (table_id)
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* all tables are 1 based unless otherwise noted
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
case Enumval_Values_Table:
|
|
Packit |
b099d7 |
header.table_size = sizeof(enumval_values_table_vec);
|
|
Packit |
b099d7 |
header.num_items = uil_max_enumval;
|
|
Packit |
b099d7 |
header.table_id = Enumval_Values_Table;
|
|
Packit |
b099d7 |
ptr = enumval_values_table;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
emit_header(&header);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
fwrite (ptr, header.table_size, 1, bfile);
|
|
Packit |
b099d7 |
if (DEBUG)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for (i=0; i
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
fprintf(afile, "%d ", ptr[i]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|