Blame clients/uil/UilSymStor.c

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: UilSymStor.c /main/15 1997/03/12 15:21:44 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
**++
Packit b099d7
**  FACILITY:
Packit b099d7
**
Packit b099d7
**      User Interface Language Compiler (UIL)
Packit b099d7
**
Packit b099d7
**  ABSTRACT:
Packit b099d7
**
Packit b099d7
**      This module contains the procedures for managing memory for
Packit b099d7
**	the compiler. 
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
**
Packit b099d7
**  INCLUDE FILES
Packit b099d7
**
Packit b099d7
**/
Packit b099d7
Packit b099d7
#include <Xm/Xm.h>
Packit b099d7
Packit b099d7
#include <ctype.h>
Packit b099d7
#include "UilDefI.h"
Packit b099d7
Packit b099d7
/*
Packit b099d7
**
Packit b099d7
**  DEFINE and MACRO DEFINITIONS
Packit b099d7
**
Packit b099d7
**/
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
**
Packit b099d7
**  EXTERNAL VARIABLE DECLARATIONS
Packit b099d7
**
Packit b099d7
**/
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
**
Packit b099d7
**  GLOBAL VARIABLE DECLARATIONS
Packit b099d7
**
Packit b099d7
**/
Packit b099d7
Packit b099d7
externaldef(uil_comp_glbl) sym_name_entry_type
Packit b099d7
	*sym_az_hash_table[ sym_k_hash_table_limit];
Packit b099d7
externaldef(uil_comp_glbl) sym_value_entry_type
Packit b099d7
	*sym_az_error_value_entry = NULL;
Packit b099d7
externaldef(uil_comp_glbl) sym_external_def_entry_type
Packit b099d7
	*sym_az_external_def_chain;
Packit b099d7
externaldef(uil_comp_glbl) sym_forward_ref_entry_type
Packit b099d7
	*sym_az_forward_ref_chain;
Packit b099d7
externaldef(uil_comp_glbl) sym_val_forward_ref_entry_type
Packit b099d7
	*sym_az_val_forward_ref_chain;
Packit b099d7
externaldef(uil_comp_glbl) sym_module_entry_type
Packit b099d7
	*sym_az_module_entry;
Packit b099d7
externaldef(uil_comp_glbl) sym_root_entry_type
Packit b099d7
	*sym_az_root_entry;
Packit b099d7
externaldef(uil_comp_glbl) sym_section_entry_type
Packit b099d7
	*sym_az_current_section_entry;
Packit b099d7
externaldef(uil_comp_glbl) sym_entry_type
Packit b099d7
	*sym_az_entry_list_header;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * These lists save the allocated and freed symbol table nodes.
Packit b099d7
 */
Packit b099d7
externaldef(uil_comp_glbl) URMPointerListPtr	sym_az_allocated_nodes;
Packit b099d7
externaldef(uil_comp_glbl) URMPointerListPtr	sym_az_freed_nodes;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
**
Packit b099d7
**  OWN VARIABLE DECLARATIONS
Packit b099d7
**
Packit b099d7
**/
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This routine intializes the compiler's memory allocation system.
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**	sym_az_last_location		ptr to last byte avail for allocation
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      first symbol table buffer is allocated
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_initialize_storage(void)
Packit b099d7
{
Packit b099d7
int		i;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Initialize the name hash table
Packit b099d7
 */
Packit b099d7
for (i=0; i
Packit b099d7
    sym_az_hash_table[ i ] = NULL;
Packit b099d7
Packit b099d7
/* 
Packit b099d7
 * Set forward reference, external definition, and symbol table header
Packit b099d7
 * chains to null.
Packit b099d7
 */
Packit b099d7
sym_az_forward_ref_chain = NULL;
Packit b099d7
sym_az_val_forward_ref_chain = NULL;
Packit b099d7
sym_az_external_def_chain = NULL;
Packit b099d7
sym_az_entry_list_header = NULL;
Packit b099d7
sym_az_module_entry = NULL;
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Acquire pointer lists to access allocated and freed nodes
Packit b099d7
 */
Packit b099d7
UrmPlistInit (1000, &sym_az_allocated_nodes);
Packit b099d7
UrmPlistInit (100, &sym_az_freed_nodes);
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Allocate a value entry for an error value and give it a name.  Giving it
Packit b099d7
 * name assures that it is not freed.  The name used is one that will not
Packit b099d7
 * conflict with a user name.
Packit b099d7
 */
Packit b099d7
Packit b099d7
if ( sym_az_error_value_entry == NULL )
Packit b099d7
    sym_az_error_value_entry = (sym_value_entry_type *)
Packit b099d7
	sem_allocate_node (sym_k_value_entry, sym_k_value_entry_size);
Packit b099d7
Packit b099d7
sym_az_error_value_entry->b_type = sym_k_error_value;
Packit b099d7
sym_az_error_value_entry->obj_header.b_flags = 
Packit b099d7
    (sym_m_private | sym_m_builtin);
Packit b099d7
Packit b099d7
sym_az_error_value_entry->obj_header.az_name =
Packit b099d7
    sym_insert_name( 9, "#error...");
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**	This routine cleans up the compiler's memory allocation system, and
Packit b099d7
**	frees all memory used by the symbol table.
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      freealloc		TRUE if allocated nodes are to be freed.
Packit b099d7
**				Otherwise, free only freed nodes.
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      sym_az_entry_list_header	ptr to list of symbol entries
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      sym_az_entry_list_header	ptr to list of symbol entries
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**	all symbol table memory is freed.
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
Uil_sym_cleanup_storage (boolean freealloc)
Packit b099d7
{
Packit b099d7
if ( freealloc )
Packit b099d7
    if ( sym_az_allocated_nodes != NULL )
Packit b099d7
	UrmPlistFreeContents (sym_az_allocated_nodes);
Packit b099d7
else
Packit b099d7
    if ( sym_az_freed_nodes != NULL )
Packit b099d7
	UrmPlistFreeContents (sym_az_freed_nodes);
Packit b099d7
if ( sym_az_allocated_nodes != NULL )
Packit b099d7
    UrmPlistFree (sym_az_allocated_nodes);
Packit b099d7
if ( sym_az_freed_nodes != NULL )
Packit b099d7
    UrmPlistFree (sym_az_freed_nodes);
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This routine adds an object to the external definition chain.
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_name		name of object to be placed on the chain
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      sym_az_external_def_chain	head of the external definition chain
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      sym_az_external_def_chain	head of the external definition chain
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_make_external_def( XmConst sym_name_entry_type *az_name )
Packit b099d7
Packit b099d7
Packit b099d7
{
Packit b099d7
Packit b099d7
    sym_external_def_entry_type   *external_entry;
Packit b099d7
Packit b099d7
    /* allocate an external definition entry */
Packit b099d7
Packit b099d7
    external_entry = (sym_external_def_entry_type *)
Packit b099d7
	sem_allocate_node (sym_k_external_def_entry,
Packit b099d7
			   sym_k_external_def_entry_size);
Packit b099d7
Packit b099d7
    /* fill in the entry */
Packit b099d7
Packit b099d7
    external_entry->az_name = (sym_name_entry_type *)az_name;
Packit b099d7
Packit b099d7
    /* place on the front of the chain */
Packit b099d7
Packit b099d7
    external_entry->az_next_object = sym_az_external_def_chain;
Packit b099d7
    sym_az_external_def_chain = external_entry;
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This routine adds a reference to the forward reference chain.
Packit b099d7
**	This routine is used for widget and gadget forward references only.
Packit b099d7
**	
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_id_frame	parse stack frame for id being referenced
Packit b099d7
**	l_widget_type	type of object being referenced
Packit b099d7
**      az_object	ptr to the location that needs to be updated
Packit b099d7
**			when the object is resolved
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      sym_az_forward_ref_chain    head of the forward reference chain
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      sym_az_forward_ref_chain    head of the forward reference chain
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_make_forward_ref(XmConst yystype *az_id_frame,
Packit b099d7
		     XmConst int     l_widget_type,
Packit b099d7
		     XmConst char    *a_location)
Packit b099d7
{
Packit b099d7
Packit b099d7
    sym_forward_ref_entry_type   *fwd_ref_entry;
Packit b099d7
Packit b099d7
    _assert( (az_id_frame->b_tag == sar_k_token_frame) &&
Packit b099d7
	     (az_id_frame->value.az_symbol_entry->header.b_tag == 
Packit b099d7
		sym_k_name_entry), "arg1 not an id frame" );
Packit b099d7
Packit b099d7
    /* allocate an external definition entry */
Packit b099d7
Packit b099d7
    fwd_ref_entry = (sym_forward_ref_entry_type *)
Packit b099d7
	sem_allocate_node (sym_k_forward_ref_entry,
Packit b099d7
			   sym_k_forward_ref_entry_size);
Packit b099d7
Packit b099d7
    /* fill in the entry */
Packit b099d7
Packit b099d7
    _sar_save_source_pos (&fwd_ref_entry->header, az_id_frame);
Packit b099d7
Packit b099d7
    fwd_ref_entry->header.b_type = l_widget_type;
Packit b099d7
    fwd_ref_entry->az_name =
Packit b099d7
	(sym_name_entry_type *) az_id_frame->value.az_symbol_entry;
Packit b099d7
    fwd_ref_entry->a_update_location = (char *)a_location;
Packit b099d7
Packit b099d7
    /* place on the front of the chain */
Packit b099d7
Packit b099d7
    fwd_ref_entry->az_next_ref = sym_az_forward_ref_chain;
Packit b099d7
    sym_az_forward_ref_chain = fwd_ref_entry;
Packit b099d7
Packit b099d7
}
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This routine adds a reference to the values forward reference chain.
Packit b099d7
**	This routine is used for value forward references only.
Packit b099d7
**	
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_id_frame	parse stack frame for id being referenced
Packit b099d7
**      az_object	ptr to the location that needs to be updated
Packit b099d7
**			when the object is resolved
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      sym_az_val_forward_ref_chain    head of the forward reference chain
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      sym_az_val_forward_ref_chain    head of the forward reference chain
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_make_value_forward_ref (XmConst yystype  *az_value_frame,
Packit b099d7
			    XmConst char *a_location,
Packit b099d7
			    XmConst unsigned char fwd_ref_flags )
Packit b099d7
Packit b099d7
{
Packit b099d7
Packit b099d7
    sym_val_forward_ref_entry_type   *fwd_ref_entry;
Packit b099d7
Packit b099d7
    /* allocate an external definition entry */
Packit b099d7
Packit b099d7
    fwd_ref_entry = (sym_val_forward_ref_entry_type *)
Packit b099d7
	sem_allocate_node (sym_k_val_forward_ref_entry,
Packit b099d7
			   sym_k_val_forward_ref_entry_size);
Packit b099d7
Packit b099d7
    /* fill in the entry */
Packit b099d7
Packit b099d7
    _sar_save_source_pos (&fwd_ref_entry->header, az_value_frame);
Packit b099d7
Packit b099d7
    switch (fwd_ref_flags)
Packit b099d7
	{
Packit b099d7
	case sym_k_patch_add:
Packit b099d7
	    fwd_ref_entry->az_name =
Packit b099d7
		((sym_value_entry_type *)
Packit b099d7
		 az_value_frame->value.az_symbol_entry)->obj_header.az_name;
Packit b099d7
	    break;
Packit b099d7
	case sym_k_patch_list_add:
Packit b099d7
	    fwd_ref_entry->az_name = 
Packit b099d7
		(sym_name_entry_type *)az_value_frame->value.az_symbol_entry;
Packit b099d7
	    break;
Packit b099d7
	default:
Packit b099d7
	    _assert(FALSE, "Illegal forward reference");
Packit b099d7
	};
Packit b099d7
	
Packit b099d7
    fwd_ref_entry->a_update_location = (char *)a_location;
Packit b099d7
    fwd_ref_entry->fwd_ref_flags = fwd_ref_flags;
Packit b099d7
Packit b099d7
    /* place on the front of the chain */
Packit b099d7
Packit b099d7
    fwd_ref_entry->az_next_ref = sym_az_val_forward_ref_chain;
Packit b099d7
    sym_az_val_forward_ref_chain = fwd_ref_entry;
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This procedure recursively goes through the symbol table, dumping
Packit b099d7
**	each node accessible from the root node.
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbol table is dump with the debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
UilDumpSymbolTable ( sym_entry_type *node_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
sym_value_entry_type		*val_node;
Packit b099d7
sym_widget_entry_type		*widget_node;
Packit b099d7
sym_module_entry_type		*module_node;
Packit b099d7
sym_list_entry_type		*list_node;
Packit b099d7
sym_obj_entry_type		*list_entry;
Packit b099d7
sym_root_entry_type		*root_node;
Packit b099d7
sym_include_file_entry_type	*ifile_node;
Packit b099d7
sym_section_entry_type		*section_node;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * No action on null node. Else dump and processing is based on the kind
Packit b099d7
 * of the current node.
Packit b099d7
 */
Packit b099d7
if ( node_entry == NULL ) return;
Packit b099d7
sym_dump_symbol (node_entry);
Packit b099d7
switch ( node_entry->header.b_tag )
Packit b099d7
    {
Packit b099d7
    case sym_k_value_entry:
Packit b099d7
        val_node = (sym_value_entry_type *) node_entry;
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)val_node->az_charset_value);
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)val_node->az_first_table_value);
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)val_node->az_next_table_value);
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)val_node->az_exp_op1);
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)val_node->az_exp_op2);
Packit b099d7
	break;
Packit b099d7
    case sym_k_widget_entry:
Packit b099d7
    case sym_k_gadget_entry:
Packit b099d7
    case sym_k_child_entry:
Packit b099d7
	widget_node = (sym_widget_entry_type *) node_entry;
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)widget_node->az_callbacks);
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)widget_node->az_arguments);
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)widget_node->az_controls);
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)widget_node->az_create_proc);
Packit b099d7
	break;
Packit b099d7
    case sym_k_module_entry:
Packit b099d7
	module_node = (sym_module_entry_type *) node_entry;
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)module_node->az_version);
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)module_node->az_character_set);
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)module_node->az_case_sense);
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)module_node->az_def_obj);
Packit b099d7
	break;
Packit b099d7
    case sym_k_list_entry:
Packit b099d7
	/*
Packit b099d7
	 * Sublists (nested lists) are not processed recursively to
Packit b099d7
	 * pick up definitions, since all named lists are picked up
Packit b099d7
	 * in their list sections. We assume no list of interest to
Packit b099d7
	 * us can possibly be encountered only in a nested list reference.
Packit b099d7
	 */
Packit b099d7
	list_node = (sym_list_entry_type *) node_entry;
Packit b099d7
	for (list_entry=(sym_obj_entry_type *)
Packit b099d7
	         list_node->obj_header.az_next;
Packit b099d7
	     list_entry!=NULL;
Packit b099d7
	     list_entry=(sym_obj_entry_type *)
Packit b099d7
	         list_entry->obj_header.az_next)
Packit b099d7
	    UilDumpSymbolTable ((sym_entry_type *)list_entry);
Packit b099d7
	break;
Packit b099d7
    case sym_k_root_entry:
Packit b099d7
	root_node = (sym_root_entry_type *) node_entry;
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)root_node->module_hdr);
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)root_node->sections);
Packit b099d7
	break;
Packit b099d7
    case sym_k_include_file_entry:
Packit b099d7
	ifile_node = (sym_include_file_entry_type *) node_entry;
Packit b099d7
	UilDumpSymbolTable ((sym_entry_type *)ifile_node->sections);
Packit b099d7
	break;
Packit b099d7
    case sym_k_section_entry:
Packit b099d7
	section_node = (sym_section_entry_type *) node_entry;
Packit b099d7
	switch ( section_node->header.b_type )
Packit b099d7
	    {
Packit b099d7
	    case sym_k_section_tail:
Packit b099d7
		break;
Packit b099d7
	    default:
Packit b099d7
		UilDumpSymbolTable ((sym_entry_type *)section_node->next);
Packit b099d7
		UilDumpSymbolTable ((sym_entry_type *)section_node->entries);
Packit b099d7
		break;
Packit b099d7
	    }
Packit b099d7
	break;
Packit b099d7
    }
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This procedure dumps the symbol table.
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbol table is dump with the debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_symbols( void )
Packit b099d7
{
Packit b099d7
Packit b099d7
int				ndx;
Packit b099d7
sym_entry_type			*cur_entry;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Loop over all entries which have been allocated. They are in
Packit b099d7
 * allocation order (this will include deleted entries).
Packit b099d7
 */
Packit b099d7
_debug_output( "\nSymbol Table Dump: \n\n" );
Packit b099d7
for ( ndx=0 ; ndx
Packit b099d7
    {
Packit b099d7
    cur_entry = (sym_entry_type *) UrmPlistPtrN (sym_az_allocated_nodes, ndx);
Packit b099d7
    sym_dump_symbol (cur_entry);
Packit b099d7
    }
Packit b099d7
_debug_output ("\n\n");
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This procedure dumps a symbol node.
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_symbol_entry			symbol node to be dumped
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbol is dumped to the debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_symbol (sym_entry_type *az_symbol_entry)
Packit b099d7
{
Packit b099d7
Packit b099d7
    switch (az_symbol_entry->header.b_tag) {
Packit b099d7
Packit b099d7
	case sym_k_name_entry:
Packit b099d7
		sym_dump_name((sym_name_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_module_entry:
Packit b099d7
		sym_dump_module((sym_module_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_value_entry:
Packit b099d7
		sym_dump_value((sym_value_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_widget_entry:
Packit b099d7
	case sym_k_gadget_entry:
Packit b099d7
	case sym_k_child_entry:
Packit b099d7
		sym_dump_widget((sym_widget_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_forward_ref_entry:
Packit b099d7
		sym_dump_forward_ref((sym_forward_ref_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_external_def_entry:
Packit b099d7
		sym_dump_external_def((sym_external_def_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_proc_def_entry:
Packit b099d7
		sym_dump_proc_def((sym_proc_def_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_proc_ref_entry:
Packit b099d7
		sym_dump_proc_ref((sym_proc_ref_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_control_entry:
Packit b099d7
		sym_dump_control((sym_control_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_argument_entry:
Packit b099d7
		sym_dump_argument((sym_argument_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_callback_entry:
Packit b099d7
		sym_dump_callback((sym_callback_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_list_entry:
Packit b099d7
		sym_dump_list((sym_list_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_color_item_entry:
Packit b099d7
		sym_dump_color_item((sym_color_item_entry_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_parent_list_entry:
Packit b099d7
		sym_dump_parent_list_item((sym_parent_list_type *) az_symbol_entry );
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_include_file_entry:
Packit b099d7
		sym_dump_include_file ((sym_include_file_entry_type *)az_symbol_entry);
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_section_entry:
Packit b099d7
		sym_dump_section ((sym_section_entry_type *)az_symbol_entry);
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_def_obj_entry:
Packit b099d7
		sym_dump_object_variant ((sym_def_obj_entry_type *)az_symbol_entry);
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	case sym_k_root_entry:
Packit b099d7
		sym_dump_root_entry ((sym_root_entry_type *)az_symbol_entry);
Packit b099d7
		break;
Packit b099d7
Packit b099d7
	default:
Packit b099d7
	    {
Packit b099d7
		int	    *l_array;
Packit b099d7
		int	    i;
Packit b099d7
Packit b099d7
		_debug_output("%x  unknown type: %d  size: %d  byte: %x\n", 
Packit b099d7
			      az_symbol_entry,
Packit b099d7
			      az_symbol_entry->header.b_tag,
Packit b099d7
			      az_symbol_entry->header.w_node_size,
Packit b099d7
			      az_symbol_entry->header.b_type );
Packit b099d7
Packit b099d7
		l_array = (int *) az_symbol_entry->b_value;
Packit b099d7
Packit b099d7
		for (i=0;  i<(int)(az_symbol_entry->header.w_node_size-1);  i++)
Packit b099d7
		    _debug_output( "\t%x", l_array[ i ] );
Packit b099d7
Packit b099d7
		_debug_output("\n");
Packit b099d7
		break;
Packit b099d7
	    }
Packit b099d7
	}
Packit b099d7
Packit b099d7
    sym_dump_source_info(( sym_entry_header_type *)az_symbol_entry);
Packit b099d7
    _debug_output("\n");
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps an object entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_widget_entry	    pointer to the object
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the object appears as part of the
Packit b099d7
**	debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_widget( XmConst sym_widget_entry_type *az_widget_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
    sym_dump_obj_header ((sym_obj_entry_type *)az_widget_entry);
Packit b099d7
Packit b099d7
    _debug_output (
Packit b099d7
	"  %s %s  controls: %x  callbacks: %x  arguments: %x  parent_list: %x\n", 
Packit b099d7
	    diag_object_text( az_widget_entry->header.b_type),
Packit b099d7
	    diag_tag_text( az_widget_entry->header.b_tag ),
Packit b099d7
	    az_widget_entry->az_controls,
Packit b099d7
	    az_widget_entry->az_callbacks,
Packit b099d7
	    az_widget_entry->az_arguments,
Packit b099d7
        az_widget_entry->parent_list);
Packit b099d7
Packit b099d7
    if (az_widget_entry->az_create_proc != NULL) {
Packit b099d7
	_debug_output ("  create proc: %x\n",
Packit b099d7
			az_widget_entry->az_create_proc);
Packit b099d7
    }
Packit b099d7
    /* preserve comments */
Packit b099d7
    _debug_output ("\n Comment: %s\n", az_widget_entry->obj_header.az_comment);
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps an argument entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_argument_entry	pointer to the argument
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the name appears as part of the
Packit b099d7
**	debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_argument( XmConst sym_argument_entry_type *az_argument_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
    sym_dump_obj_header ((sym_obj_entry_type *)az_argument_entry);
Packit b099d7
Packit b099d7
    _debug_output ( "  arg name: %x  arg value: %x\n", 
Packit b099d7
	az_argument_entry->az_arg_name,
Packit b099d7
	az_argument_entry->az_arg_value );
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps a control entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_control_entry	pointer to the control
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the name appears as part of the
Packit b099d7
**	debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_control( XmConst sym_control_entry_type *az_control_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
    sym_dump_obj_header ((sym_obj_entry_type *)az_control_entry);
Packit b099d7
Packit b099d7
/*    These are for control objects only.     */
Packit b099d7
Packit b099d7
    if (az_control_entry->obj_header.b_flags & sym_m_def_in_progress) {
Packit b099d7
	_debug_output ("  def in progress");
Packit b099d7
    }
Packit b099d7
Packit b099d7
    if (az_control_entry->obj_header.b_flags & sym_m_managed) {
Packit b099d7
	_debug_output ("  managed");
Packit b099d7
    } else {
Packit b099d7
	_debug_output ("  unmanaged");
Packit b099d7
    }
Packit b099d7
Packit b099d7
    _debug_output ( "  obj: %x\n", 
Packit b099d7
	az_control_entry->az_con_obj );
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps a callback entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_callback_entry	pointer to the callback
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the name appears as part of the
Packit b099d7
**	debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_callback( XmConst sym_callback_entry_type *az_callback_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
    sym_dump_obj_header ((sym_obj_entry_type *)az_callback_entry);
Packit b099d7
Packit b099d7
    _debug_output ( "  reason name: %x  proc ref: %x  proc ref list: %x\n", 
Packit b099d7
	az_callback_entry->az_call_reason_name,
Packit b099d7
	az_callback_entry->az_call_proc_ref,
Packit b099d7
    az_callback_entry->az_call_proc_ref_list );
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps a  list entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_list_entry	pointer to the list
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the name appears as part of the
Packit b099d7
**	debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_list( XmConst sym_list_entry_type *az_list_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
    sym_dump_obj_header ((sym_obj_entry_type *)az_list_entry);
Packit b099d7
Packit b099d7
    _debug_output ( "  type: %s  count: %d  gadget count: %d\n", 
Packit b099d7
	diag_tag_text( az_list_entry->header.b_type),
Packit b099d7
	az_list_entry->w_count,
Packit b099d7
	az_list_entry->w_gadget_count );
Packit b099d7
Packit b099d7
    /* preserve comments */
Packit b099d7
    _debug_output ("\n Comment: %s\n", az_list_entry->obj_header.az_comment);
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps a name entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_name_entry	    pointer to the name
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the name appears as part of the
Packit b099d7
**	debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_name( XmConst sym_name_entry_type *az_name_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
    _debug_output
Packit b099d7
	( "%x name size: %d  next name: %x  object: %x",
Packit b099d7
	  az_name_entry,
Packit b099d7
	  az_name_entry->header.w_node_size,
Packit b099d7
	  az_name_entry->az_next_name_entry,
Packit b099d7
	  az_name_entry->az_object );
Packit b099d7
Packit b099d7
    if (az_name_entry->b_flags & sym_m_referenced) {
Packit b099d7
	_debug_output (" referenced");
Packit b099d7
    }
Packit b099d7
Packit b099d7
    _debug_output
Packit b099d7
	( "  name: %s \n", az_name_entry->c_text );
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps a module entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_module_entry	    pointer to the module
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the module appears as part of the
Packit b099d7
**	debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_module( XmConst sym_module_entry_type *az_module_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
    _debug_output
Packit b099d7
	( "%x module size: %d  name: %x  version: %x \n",
Packit b099d7
	  az_module_entry,
Packit b099d7
	  az_module_entry->header.w_node_size,
Packit b099d7
	  az_module_entry->obj_header.az_name,
Packit b099d7
	  az_module_entry->az_version );
Packit b099d7
Packit b099d7
    /* preserve comments */
Packit b099d7
    _debug_output ("\n Comment: %s\n", az_module_entry->obj_header.az_comment);
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps a color item entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_color_item_entry	    pointer to the color_item
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the color item appears as part of the
Packit b099d7
**	debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_color_item( XmConst sym_color_item_entry_type *az_color_item_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
    _debug_output
Packit b099d7
	( "%x color_item  size: %d  letter: %c  index: %d  color: %x  next: %x\n",
Packit b099d7
	  az_color_item_entry,
Packit b099d7
	  az_color_item_entry->header.w_node_size,
Packit b099d7
	  az_color_item_entry->b_letter,
Packit b099d7
	  az_color_item_entry->b_index,
Packit b099d7
	  az_color_item_entry->az_color,
Packit b099d7
	  az_color_item_entry->az_next );
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps a parent_list entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_parent_list_item	    pointer to the parent list entry
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_parent_list_item ( XmConst sym_parent_list_type *az_parent_list_item )
Packit b099d7
{
Packit b099d7
    _debug_output
Packit b099d7
	( "%x parent_list  size: %d  parent: %x  next: %x \n",
Packit b099d7
	  az_parent_list_item,
Packit b099d7
      az_parent_list_item->header.w_node_size,
Packit b099d7
      az_parent_list_item->parent,
Packit b099d7
      az_parent_list_item->next);
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps an external definition entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_external_def_entry	pointer to the external definition
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the name appears as part of the
Packit b099d7
**	debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_external_def(
Packit b099d7
		    XmConst sym_external_def_entry_type *az_external_def_entry)
Packit b099d7
{
Packit b099d7
Packit b099d7
    _debug_output
Packit b099d7
	( "%x external def  size: %d  next external: %x  object: %x \n",
Packit b099d7
	  az_external_def_entry,
Packit b099d7
	  az_external_def_entry->header.w_node_size,
Packit b099d7
	  az_external_def_entry->az_next_object,
Packit b099d7
	  az_external_def_entry->az_name );
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps a procedure definition entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_proc_def_entry	pointer to the procedure definition
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the procedure definition appears as 
Packit b099d7
**	part of the debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_proc_def( XmConst sym_proc_def_entry_type *az_proc_def_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
    char    *private_flag;
Packit b099d7
    char    *imported_flag;
Packit b099d7
    char    *exported_flag;
Packit b099d7
    char    *checking_flag;
Packit b099d7
Packit b099d7
    private_flag = "";
Packit b099d7
    imported_flag = "";
Packit b099d7
    exported_flag = "";
Packit b099d7
    checking_flag = " no-check";
Packit b099d7
Packit b099d7
    if (az_proc_def_entry->v_arg_checking)
Packit b099d7
	checking_flag = " check";	
Packit b099d7
    if (az_proc_def_entry->obj_header.b_flags & sym_m_private)
Packit b099d7
	private_flag = " private";	
Packit b099d7
    if (az_proc_def_entry->obj_header.b_flags & sym_m_exported)
Packit b099d7
	exported_flag = " exported";	
Packit b099d7
    if (az_proc_def_entry->obj_header.b_flags & sym_m_imported)
Packit b099d7
	imported_flag = " imported";	
Packit b099d7
Packit b099d7
    _debug_output
Packit b099d7
	( "%x proc def  size: %d  name: %x %s%s%s%s  count: %d  %s\n",
Packit b099d7
	  az_proc_def_entry,
Packit b099d7
	  az_proc_def_entry->header.w_node_size,
Packit b099d7
	  az_proc_def_entry->obj_header.az_name,
Packit b099d7
	  checking_flag,
Packit b099d7
	  private_flag,
Packit b099d7
	  exported_flag,
Packit b099d7
	  imported_flag,
Packit b099d7
	  az_proc_def_entry->b_arg_count,
Packit b099d7
	  diag_value_text( az_proc_def_entry->b_arg_type ) );
Packit b099d7
Packit b099d7
    /* preserve comments */
Packit b099d7
    _debug_output ("\nComment: %s\n",az_proc_def_entry->obj_header.az_comment);
Packit b099d7
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps a procedure reference entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_proc_ref_entry	pointer to the procedure reference entry
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the procedure reference appears as 
Packit b099d7
**	part of the debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_proc_ref( XmConst sym_proc_ref_entry_type *az_proc_ref_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
    sym_dump_obj_header ((sym_obj_entry_type *)az_proc_ref_entry);
Packit b099d7
Packit b099d7
    _debug_output
Packit b099d7
	( "%x proc ref  size: %d  proc def: %x  value: %x\n",
Packit b099d7
	  az_proc_ref_entry,
Packit b099d7
	  az_proc_ref_entry->header.w_node_size,
Packit b099d7
	  az_proc_ref_entry->az_proc_def,
Packit b099d7
	  az_proc_ref_entry->az_arg_value );
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps an forward reference entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_forward_ref_entry	pointer to the forward reference
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the name appears as part of the
Packit b099d7
**	debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_forward_ref(XmConst sym_forward_ref_entry_type *az_forward_ref_entry)
Packit b099d7
{
Packit b099d7
Packit b099d7
    _debug_output
Packit b099d7
	( "%x forward ref  size: %d  next ref: %x  location: %x  %s  parent: %x\n",
Packit b099d7
	  az_forward_ref_entry,
Packit b099d7
	  az_forward_ref_entry->header.w_node_size,
Packit b099d7
	  az_forward_ref_entry->az_next_ref,
Packit b099d7
	  az_forward_ref_entry->a_update_location,
Packit b099d7
	  diag_object_text( az_forward_ref_entry->header.b_type ),
Packit b099d7
      az_forward_ref_entry->parent );
Packit b099d7
Packit b099d7
    _debug_output
Packit b099d7
	( "  name: %x %s\n",
Packit b099d7
	  az_forward_ref_entry->az_name,
Packit b099d7
	  az_forward_ref_entry->az_name->c_text );
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function dumps a value entry in the symbol table
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      az_value_entry	    pointer to the value
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      symbolic representation of the value appears as part of the
Packit b099d7
**	debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_value( XmConst sym_value_entry_type *az_value_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
    char    *private_flag;
Packit b099d7
    char    *imported_flag;
Packit b099d7
    char    *exported_flag;
Packit b099d7
    char    *builtin_flag;
Packit b099d7
    char    *special_type, *table_type;
Packit b099d7
Packit b099d7
    private_flag = "";
Packit b099d7
    imported_flag = "";
Packit b099d7
    exported_flag = "";
Packit b099d7
    builtin_flag = "";
Packit b099d7
Packit b099d7
    if (az_value_entry->obj_header.b_flags & sym_m_builtin)
Packit b099d7
	builtin_flag = " builtin";	
Packit b099d7
    if (az_value_entry->obj_header.b_flags & sym_m_private)
Packit b099d7
	private_flag = " private";	
Packit b099d7
    if (az_value_entry->obj_header.b_flags & sym_m_exported)
Packit b099d7
	exported_flag = " exported";	
Packit b099d7
    if (az_value_entry->obj_header.b_flags & sym_m_imported)
Packit b099d7
	imported_flag = " imported";	
Packit b099d7
Packit b099d7
    _debug_output
Packit b099d7
	( "%x value  size: %d  name: %x  %s%s%s%s",
Packit b099d7
	  az_value_entry,
Packit b099d7
	  az_value_entry->header.w_node_size,
Packit b099d7
	  az_value_entry->obj_header.az_name,
Packit b099d7
	  builtin_flag, private_flag, exported_flag, imported_flag );
Packit b099d7
Packit b099d7
    if (az_value_entry->obj_header.b_flags & sym_m_imported)
Packit b099d7
    {
Packit b099d7
	_debug_output( "  %s \n", diag_value_text( az_value_entry->b_type ));
Packit b099d7
	return;
Packit b099d7
    }
Packit b099d7
Packit b099d7
    switch (az_value_entry->b_type)
Packit b099d7
    {
Packit b099d7
    case sym_k_integer_value:
Packit b099d7
    case sym_k_horizontal_integer_value:
Packit b099d7
    case sym_k_vertical_integer_value:
Packit b099d7
	_debug_output("  integer: %ld \n", 
Packit b099d7
		      az_value_entry->value.l_integer );
Packit b099d7
	break;
Packit b099d7
Packit b099d7
    case sym_k_bool_value:
Packit b099d7
	_debug_output("  boolean: %ld \n", 
Packit b099d7
		      az_value_entry->value.l_integer );
Packit b099d7
	break;
Packit b099d7
Packit b099d7
    case sym_k_float_value:
Packit b099d7
    case sym_k_horizontal_float_value:
Packit b099d7
    case sym_k_vertical_float_value:
Packit b099d7
	_debug_output("  double: %g \n", 
Packit b099d7
		      az_value_entry->value.d_real);
Packit b099d7
	break;
Packit b099d7
Packit b099d7
    case sym_k_color_value:
Packit b099d7
    {
Packit b099d7
	char	*ptr;
Packit b099d7
Packit b099d7
	switch (az_value_entry->b_arg_type)
Packit b099d7
	{
Packit b099d7
	case sym_k_background_color:
Packit b099d7
		ptr = "background";
Packit b099d7
		break;
Packit b099d7
	case sym_k_foreground_color:
Packit b099d7
		ptr = "foreground";
Packit b099d7
		break;
Packit b099d7
	case sym_k_unspecified_color:
Packit b099d7
		ptr = "unspecified";
Packit b099d7
		break;
Packit b099d7
	default:
Packit b099d7
		ptr = "illegal";
Packit b099d7
	}
Packit b099d7
Packit b099d7
	_debug_output("  color  type: %s", ptr );
Packit b099d7
Packit b099d7
	output_text( az_value_entry->w_length, 
Packit b099d7
		     az_value_entry->value.c_value);
Packit b099d7
Packit b099d7
	break;
Packit b099d7
    }
Packit b099d7
Packit b099d7
    case sym_k_reason_value:
Packit b099d7
	special_type = "reason";
Packit b099d7
	goto common_special_type;
Packit b099d7
Packit b099d7
    case sym_k_argument_value:
Packit b099d7
	special_type = "argument";
Packit b099d7
Packit b099d7
common_special_type:
Packit b099d7
Packit b099d7
	_debug_output("  %s", special_type );
Packit b099d7
Packit b099d7
	if (az_value_entry->obj_header.b_flags & sym_m_builtin)
Packit b099d7
	    _debug_output("  code: %ld \n", az_value_entry->value.l_integer );
Packit b099d7
	else
Packit b099d7
	    output_text( az_value_entry->w_length, 
Packit b099d7
			 az_value_entry->value.c_value);
Packit b099d7
Packit b099d7
	break;
Packit b099d7
Packit b099d7
    case sym_k_compound_string_value:
Packit b099d7
	_debug_output("  compound string\n  first component: %x\n", 
Packit b099d7
		      az_value_entry->az_first_table_value );
Packit b099d7
Packit b099d7
	if ( (az_value_entry->b_aux_flags & sym_m_table_entry) != 0 ) {
Packit b099d7
	    _debug_output("  next table entry: %x",
Packit b099d7
			  az_value_entry->az_next_table_value);
Packit b099d7
	}
Packit b099d7
Packit b099d7
	break;
Packit b099d7
Packit b099d7
Packit b099d7
    case sym_k_font_value:
Packit b099d7
    case sym_k_fontset_value:
Packit b099d7
	if (az_value_entry->b_charset != sym_k_userdefined_charset) 
Packit b099d7
	    _debug_output("  font  charset: %s", 
Packit b099d7
			  diag_charset_text( az_value_entry->b_charset ) );
Packit b099d7
	else
Packit b099d7
	    _debug_output("  font  charset: userdefined(%x)", 
Packit b099d7
			  diag_charset_text( (long)az_value_entry->az_charset_value ) );
Packit b099d7
Packit b099d7
	goto check_for_table_value;
Packit b099d7
Packit b099d7
Packit b099d7
      case sym_k_char_8_value:
Packit b099d7
      case sym_k_localized_string_value:
Packit b099d7
	if (az_value_entry->b_charset != sym_k_userdefined_charset) 
Packit b099d7
	    switch ( az_value_entry->b_direction )
Packit b099d7
		{
Packit b099d7
		case XmSTRING_DIRECTION_L_TO_R:
Packit b099d7
		    _debug_output
Packit b099d7
			("  string length: %d\n  charset: %s  L_TO_R", 
Packit b099d7
			  az_value_entry->w_length,
Packit b099d7
			  diag_charset_text(
Packit b099d7
			      az_value_entry->b_charset ));
Packit b099d7
		    break;
Packit b099d7
		case XmSTRING_DIRECTION_R_TO_L:
Packit b099d7
		    _debug_output
Packit b099d7
			("  string length: %d\n  charset: %s  R_TO_L", 
Packit b099d7
			  az_value_entry->w_length,
Packit b099d7
			  diag_charset_text(
Packit b099d7
			      az_value_entry->b_charset ));
Packit b099d7
		    break;
Packit b099d7
		}
Packit b099d7
	else
Packit b099d7
	    switch ( az_value_entry->b_direction )
Packit b099d7
		{
Packit b099d7
		case XmSTRING_DIRECTION_L_TO_R:
Packit b099d7
		    _debug_output
Packit b099d7
			("  string length: %d\n  charset: userdefined(%x)  L_TO_R", 
Packit b099d7
			  az_value_entry->w_length,
Packit b099d7
			  az_value_entry->az_charset_value);
Packit b099d7
		    break;
Packit b099d7
		case XmSTRING_DIRECTION_R_TO_L:
Packit b099d7
		    _debug_output
Packit b099d7
			("  string length: %d\n  charset: userdefined(%x)  R_TO_L", 
Packit b099d7
			  az_value_entry->w_length,
Packit b099d7
			  az_value_entry->az_charset_value);
Packit b099d7
		    break;
Packit b099d7
		}
Packit b099d7
Packit b099d7
/*	See if this is an entry in a table.	*/
Packit b099d7
check_for_table_value:
Packit b099d7
Packit b099d7
	if ( (az_value_entry->b_aux_flags & sym_m_table_entry) != 0 ) {
Packit b099d7
	    _debug_output("  next table entry: %x",
Packit b099d7
			  az_value_entry->az_next_table_value);
Packit b099d7
	}
Packit b099d7
Packit b099d7
	output_text
Packit b099d7
	    ( az_value_entry->w_length, az_value_entry->value.c_value );
Packit b099d7
Packit b099d7
	break;
Packit b099d7
Packit b099d7
    case sym_k_identifier_value:
Packit b099d7
	_debug_output("  identifier: %s", az_value_entry->value.c_value );
Packit b099d7
Packit b099d7
	break;
Packit b099d7
Packit b099d7
    case sym_k_icon_value:
Packit b099d7
	_debug_output("  icon  width: %d  height: %d  colors: %x  rows: %x \n", 
Packit b099d7
		      az_value_entry->value.z_icon->w_width,
Packit b099d7
		      az_value_entry->value.z_icon->w_height,
Packit b099d7
		      az_value_entry->value.z_icon->az_color_table,
Packit b099d7
		      az_value_entry->value.z_icon->az_rows );
Packit b099d7
Packit b099d7
	break;
Packit b099d7
Packit b099d7
    case sym_k_string_table_value:
Packit b099d7
	table_type = "string table";
Packit b099d7
	goto common_table;
Packit b099d7
Packit b099d7
    case sym_k_font_table_value:
Packit b099d7
	table_type = "font table";
Packit b099d7
	goto common_table;
Packit b099d7
Packit b099d7
    case sym_k_trans_table_value:
Packit b099d7
	table_type = "translation table";
Packit b099d7
Packit b099d7
common_table:
Packit b099d7
Packit b099d7
	_debug_output("  %s  first table entry: %x\n",
Packit b099d7
		table_type, az_value_entry->az_first_table_value);
Packit b099d7
Packit b099d7
	break;
Packit b099d7
Packit b099d7
    case sym_k_color_table_value:
Packit b099d7
    {
Packit b099d7
	int	index;
Packit b099d7
Packit b099d7
	_debug_output("  color_table  count: %d  max_index: %d \n",
Packit b099d7
		      az_value_entry->b_table_count,
Packit b099d7
		      az_value_entry->b_max_index );
Packit b099d7
Packit b099d7
        for (index = 0;  index < (int)az_value_entry->b_table_count;  index++)
Packit b099d7
	{
Packit b099d7
Packit b099d7
	    _debug_output( "    letter: %c  index: %d  color: %x\n",
Packit b099d7
			   az_value_entry->value.z_color[index].b_letter,
Packit b099d7
			   az_value_entry->value.z_color[index].b_index,
Packit b099d7
			   az_value_entry->value.z_color[index].az_color );
Packit b099d7
	}
Packit b099d7
Packit b099d7
	break;
Packit b099d7
    }
Packit b099d7
Packit b099d7
    case sym_k_error_value:
Packit b099d7
	_debug_output("  error \n");
Packit b099d7
Packit b099d7
	break;
Packit b099d7
Packit b099d7
    default:
Packit b099d7
	_debug_output(" unknown type: %d \n", az_value_entry->b_type );
Packit b099d7
    }
Packit b099d7
Packit b099d7
    /* preserve comments */
Packit b099d7
    _debug_output ("\nComment: %s\n",az_value_entry->obj_header.az_comment);
Packit b099d7
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This function will output an arbitrarily long amount of text
Packit b099d7
**	with the debug output.
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**      length	    length of the text
Packit b099d7
**	text	    pointer to the text
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**      none
Packit b099d7
**
Packit b099d7
**  FUNCTION VALUE:
Packit b099d7
**
Packit b099d7
**      void
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**      text is placed in the debug output
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
output_text(XmConst int length, XmConst char *text)
Packit b099d7
{
Packit b099d7
Packit b099d7
    char    		c_buffer[ 71 ];
Packit b099d7
    XmConst char	*c_ptr;
Packit b099d7
    int	    		l_length;
Packit b099d7
Packit b099d7
    l_length = length;
Packit b099d7
Packit b099d7
    _debug_output( "\n" );
Packit b099d7
Packit b099d7
    for (c_ptr = text;  
Packit b099d7
Packit b099d7
	 l_length > 0;  
Packit b099d7
Packit b099d7
	 l_length -= 70,
Packit b099d7
	 c_ptr += 70)
Packit b099d7
    {
Packit b099d7
	int	last;
Packit b099d7
	int	i;
Packit b099d7
Packit b099d7
	last = ( l_length > 70)? 70: l_length;
Packit b099d7
Packit b099d7
	_move( c_buffer, c_ptr, last );
Packit b099d7
Packit b099d7
	for (i=0;  i
Packit b099d7
	{
Packit b099d7
	    if (iscntrl( c_buffer[ i ] ))
Packit b099d7
		c_buffer[ i ] = '.';
Packit b099d7
	}
Packit b099d7
Packit b099d7
	c_buffer[ last ] = 0;			
Packit b099d7
	_debug_output( "    \"%s\"\n", c_buffer );
Packit b099d7
    }
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**	This procedure dumps the source information in the header of symbol
Packit b099d7
**	entries.
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
void
Packit b099d7
sym_dump_source_info (sym_entry_header_type *hdr)
Packit b099d7
{
Packit b099d7
    src_source_record_type *src_rec;
Packit b099d7
Packit b099d7
    src_rec = hdr->az_src_rec;
Packit b099d7
Packit b099d7
    if (src_rec != NULL)
Packit b099d7
	_debug_output ("  Source position:	file %d, line %d, columns %d through %d\n",
Packit b099d7
		src_rec->b_file_number,
Packit b099d7
		src_rec->w_line_number,
Packit b099d7
		hdr->b_src_pos,
Packit b099d7
		hdr->b_end_pos);
Packit b099d7
    else
Packit b099d7
	_debug_output ("  Src source record not present.\n");
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
**++
Packit b099d7
**  FUNCTIONAL DESCRIPTION:
Packit b099d7
**
Packit b099d7
**      This procedure dumps the common header of "object" entries.
Packit b099d7
**
Packit b099d7
**  FORMAL PARAMETERS:
Packit b099d7
**
Packit b099d7
**
Packit b099d7
**  IMPLICIT INPUTS:
Packit b099d7
**
Packit b099d7
**
Packit b099d7
**  IMPLICIT OUTPUTS:
Packit b099d7
**
Packit b099d7
**
Packit b099d7
**  SIDE EFFECTS:
Packit b099d7
**
Packit b099d7
**
Packit b099d7
**--
Packit b099d7
**/
Packit b099d7
Packit b099d7
void
Packit b099d7
sym_dump_obj_header (XmConst sym_obj_entry_type *az_obj_entry)
Packit b099d7
{
Packit b099d7
Packit b099d7
    _debug_output
Packit b099d7
	( "%x %s  size: %d  \n",
Packit b099d7
	  az_obj_entry,
Packit b099d7
	  diag_tag_text (az_obj_entry->header.b_tag),
Packit b099d7
	  az_obj_entry->header.w_node_size);
Packit b099d7
Packit b099d7
    if (az_obj_entry->obj_header.az_name != NULL) {
Packit b099d7
	_debug_output ("  name: %x", az_obj_entry->obj_header.az_name);
Packit b099d7
    }
Packit b099d7
Packit b099d7
    if (az_obj_entry->obj_header.az_reference != NULL) {
Packit b099d7
	_debug_output ("  reference: %x",
Packit b099d7
			az_obj_entry->obj_header.az_reference);
Packit b099d7
    }
Packit b099d7
Packit b099d7
    if (az_obj_entry->obj_header.az_next != NULL) {
Packit b099d7
	_debug_output ("  next: %x", az_obj_entry->obj_header.az_next);
Packit b099d7
    }
Packit b099d7
Packit b099d7
    if (az_obj_entry->obj_header.b_flags & sym_m_private) {
Packit b099d7
	_debug_output (" private");
Packit b099d7
    }
Packit b099d7
Packit b099d7
    if (az_obj_entry->obj_header.b_flags & sym_m_exported) {
Packit b099d7
	_debug_output (" exported");
Packit b099d7
    }
Packit b099d7
Packit b099d7
    if (az_obj_entry->obj_header.b_flags & sym_m_imported) {
Packit b099d7
	_debug_output (" imported");
Packit b099d7
    }
Packit b099d7
Packit b099d7
    _debug_output ("\n");
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
void
Packit b099d7
sym_dump_include_file ( sym_include_file_entry_type *az_symbol_entry )
Packit b099d7
{
Packit b099d7
Packit b099d7
    _debug_output ("%x  include file  file name: %s  full file name: %s\n",
Packit b099d7
	az_symbol_entry,
Packit b099d7
	az_symbol_entry->file_name, az_symbol_entry->full_file_name);
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
void
Packit b099d7
sym_dump_section ( sym_section_entry_type *az_symbol_entry )
Packit b099d7
{
Packit b099d7
    _debug_output ("%x  %s section  prev section : %x  next section: %x  entries: %x\n",
Packit b099d7
	az_symbol_entry,
Packit b099d7
	sym_section_text(az_symbol_entry->header.b_type),
Packit b099d7
	az_symbol_entry->prev_section, az_symbol_entry->next, 
Packit b099d7
	az_symbol_entry->entries);
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
void
Packit b099d7
sym_dump_object_variant ( sym_def_obj_entry_type * az_symbol_entry )
Packit b099d7
{
Packit b099d7
    _debug_output ("%x  default obj var  next: %x  object info: %d, variant_info: %d\n",
Packit b099d7
	az_symbol_entry,
Packit b099d7
	az_symbol_entry->next, az_symbol_entry->b_object_info, 
Packit b099d7
	az_symbol_entry->b_variant_info);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
void
Packit b099d7
sym_dump_root_entry ( sym_root_entry_type *az_symbol_entry )
Packit b099d7
{
Packit b099d7
    _debug_output (  "%x  root  tag: %d  module: %x  sections: %x\n  module tail: ",
Packit b099d7
	az_symbol_entry,
Packit b099d7
	az_symbol_entry->header.b_tag,
Packit b099d7
	az_symbol_entry->module_hdr,
Packit b099d7
	az_symbol_entry->sections);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
char *
Packit b099d7
sym_section_text (int b_type)
Packit b099d7
{
Packit b099d7
    switch (b_type)
Packit b099d7
    {
Packit b099d7
	case 0:
Packit b099d7
	    return "";
Packit b099d7
	case sym_k_list_section:
Packit b099d7
	    return "list";
Packit b099d7
	case sym_k_procedure_section:
Packit b099d7
	    return "procedure";
Packit b099d7
	case sym_k_value_section:
Packit b099d7
	    return "value";
Packit b099d7
	case sym_k_identifier_section:
Packit b099d7
	    return "identifier";
Packit b099d7
	case sym_k_object_section:
Packit b099d7
	    return "object";
Packit b099d7
	case sym_k_include_section:
Packit b099d7
	    return "include";
Packit b099d7
	case sym_k_section_tail:
Packit b099d7
	    return "tail";
Packit b099d7
	default:
Packit b099d7
	    return "*unknown*";
Packit b099d7
    }
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7