|
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: UilLstMac.c /main/15 1997/03/12 15:21:48 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 contain the routines for creating the machine listing.
|
|
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 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <Mrm/MrmAppl.h>
|
|
Packit |
b099d7 |
#include <X11/Xmd.h> /* For 64-bit architecture dependencies */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef DXM_V11
|
|
Packit |
b099d7 |
#include <DXm/DXmHelpB.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include "UilDefI.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** DEFINE and MACRO DEFINITIONS
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
**/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Holds offset info for machine code listing. */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct _off_info {
|
|
Packit |
b099d7 |
unsigned short int w_off_type;
|
|
Packit |
b099d7 |
unsigned short int w_off_offset;
|
|
Packit |
b099d7 |
} off_info_type;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define k_name_off 0
|
|
Packit |
b099d7 |
#define k_class_off 1
|
|
Packit |
b099d7 |
#define k_arglist_off 2
|
|
Packit |
b099d7 |
#define k_children_off 3
|
|
Packit |
b099d7 |
#define k_comment_off 4
|
|
Packit |
b099d7 |
#define k_creation_off 5
|
|
Packit |
b099d7 |
#define k_callback_off 6
|
|
Packit |
b099d7 |
#define k_resource_off 7
|
|
Packit |
b099d7 |
#define k_float_off 8
|
|
Packit |
b099d7 |
#define k_unknown_off 9
|
|
Packit |
b099d7 |
#define k_resource_id_off 10
|
|
Packit |
b099d7 |
#define k_child_off 11
|
|
Packit |
b099d7 |
#define k_text_entry_off 12
|
|
Packit |
b099d7 |
#define k_null_text_entry_off 13
|
|
Packit |
b099d7 |
#define k_single_float_off 14 /* single float data type RAP */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define k_off_stack_size 300
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static off_info_type off_info_stack [k_off_stack_size];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static int off_info_cnt = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define off_stack_empty (off_info_cnt == 0)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _Offset(type,base,field) \
|
|
Packit |
b099d7 |
((unsigned int)(base + XtOffsetOf(type, field)))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#if defined(__STDC__)
|
|
Packit |
b099d7 |
#define _OffsetArray(type,base,field) \
|
|
Packit |
b099d7 |
((unsigned int)(base + XtOffsetOf(type, field)))
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
#define _OffsetArray(type,base,field) \
|
|
Packit |
b099d7 |
((unsigned int)(base + XtOffsetOf(type, field[0])))
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#define _Pointer(base,offset) ((char *)(base)+(offset))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define ASNHEADERLEN 3
|
|
Packit |
b099d7 |
#define CSLONGBIT (unsigned char)(0x80)
|
|
Packit |
b099d7 |
#define ASNstrlen(a) (ASNHEADERLEN+ \
|
|
Packit |
b099d7 |
(((unsigned char)(a)[ASNHEADERLEN]&CSLONGBIT)? \
|
|
Packit |
b099d7 |
(((unsigned short)((a)[ASNHEADERLEN+1])<<8) | \
|
|
Packit |
b099d7 |
(unsigned short)((a)[ASNHEADERLEN+2]))+3 : \
|
|
Packit |
b099d7 |
((unsigned short)((a)[ASNHEADERLEN]))+1))
|
|
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 |
|
|
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 function saves the machine code listing information for widgets.
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** widget_entry Symbol node for this widget
|
|
Packit |
b099d7 |
** az_context context containing the URM output information.
|
|
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 |
** the machine code is saved in the source record structure for
|
|
Packit |
b099d7 |
** the widget.
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
**--
|
|
Packit |
b099d7 |
**/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void save_widget_machine_code ( widget_entry, az_context )
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sym_widget_entry_type * widget_entry;
|
|
Packit |
b099d7 |
URMResourceContext * az_context;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
RGMWidgetRecordPtr w_rec;
|
|
Packit |
b099d7 |
char buffer [132];
|
|
Packit |
b099d7 |
unsigned short int w_rec_size;
|
|
Packit |
b099d7 |
src_source_record_type * az_src_rec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _WRPointer(w_rec,offset) ((char *)(w_rec)+(offset))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _WROffset(field) (_Offset(RGMWidgetRecord,0,field))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
az_src_rec = widget_entry->header.az_src_rec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (widget_entry->resource_id != 0 ) {
|
|
Packit |
b099d7 |
sprintf (buffer, "Resource ID: %08lX", widget_entry->resource_id);
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
0,
|
|
Packit |
b099d7 |
0, 0,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
} else if (widget_entry->obj_header.az_name != NULL) {
|
|
Packit |
b099d7 |
sprintf (buffer, "Resource index: %s",
|
|
Packit |
b099d7 |
widget_entry->obj_header.az_name->c_text);
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
0,
|
|
Packit |
b099d7 |
0, 0,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
w_rec = (RGMWidgetRecordPtr) UrmRCBuffer (az_context);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_WROffset (validation),
|
|
Packit |
b099d7 |
sizeof (w_rec->validation), (char*)& w_rec->validation,
|
|
Packit |
b099d7 |
"widget record" );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "size: %d", w_rec->size);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_WROffset (size),
|
|
Packit |
b099d7 |
sizeof (w_rec->size), (char*)& w_rec->size,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
w_rec_size = w_rec->size;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "access: %s",
|
|
Packit |
b099d7 |
access_from_code (w_rec->access) );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_WROffset (access),
|
|
Packit |
b099d7 |
sizeof (w_rec->access), (char*)& w_rec->access,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "locked: ");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (w_rec->lock) {
|
|
Packit |
b099d7 |
strcat (buffer, "true");
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
strcat (buffer, "false");
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_WROffset (lock),
|
|
Packit |
b099d7 |
sizeof (w_rec->lock), (char*)& w_rec->lock,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "type: ");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
strcat (buffer, class_name_from_code (w_rec->type));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_WROffset (type),
|
|
Packit |
b099d7 |
sizeof (w_rec->type), (char*)& w_rec->type,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (w_rec->name_offs == (MrmOffset) 0) {
|
|
Packit |
b099d7 |
sprintf (buffer, "no name specified");
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
sprintf (buffer, "name: offset %X (hex)",
|
|
Packit |
b099d7 |
w_rec->name_offs);
|
|
Packit |
b099d7 |
off_put (k_name_off, w_rec->name_offs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_WROffset (name_offs),
|
|
Packit |
b099d7 |
sizeof (w_rec->name_offs),
|
|
Packit |
b099d7 |
(char*)& w_rec->name_offs,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (w_rec->class_offs == (MrmOffset) 0) {
|
|
Packit |
b099d7 |
sprintf (buffer, "class: builtin");
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
sprintf (buffer, "class: offset %X (hex)",
|
|
Packit |
b099d7 |
w_rec->class_offs);
|
|
Packit |
b099d7 |
off_put (k_class_off, w_rec->class_offs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_WROffset (class_offs),
|
|
Packit |
b099d7 |
sizeof (w_rec->class_offs),
|
|
Packit |
b099d7 |
(char*)& w_rec->class_offs,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (w_rec->arglist_offs == (MrmOffset) 0) {
|
|
Packit |
b099d7 |
sprintf (buffer, "no argument list");
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
sprintf (buffer, "argument list offset: %X (hex)", w_rec->arglist_offs);
|
|
Packit |
b099d7 |
off_put (k_arglist_off, w_rec->arglist_offs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_WROffset (arglist_offs),
|
|
Packit |
b099d7 |
sizeof (w_rec->arglist_offs),
|
|
Packit |
b099d7 |
(char*)& w_rec->arglist_offs,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (w_rec->children_offs == (MrmOffset) 0) {
|
|
Packit |
b099d7 |
sprintf (buffer, "no children");
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
sprintf (buffer, "children list offset: %X (hex)",
|
|
Packit |
b099d7 |
w_rec->children_offs);
|
|
Packit |
b099d7 |
off_put (k_children_off, w_rec->children_offs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_WROffset (children_offs),
|
|
Packit |
b099d7 |
sizeof (w_rec->children_offs),
|
|
Packit |
b099d7 |
(char*)& w_rec->children_offs,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (w_rec->comment_offs == (MrmOffset) 0) {
|
|
Packit |
b099d7 |
sprintf (buffer, "no comment specified");
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
sprintf (buffer, "comment: offset %X (hex)",
|
|
Packit |
b099d7 |
w_rec->comment_offs);
|
|
Packit |
b099d7 |
off_put (k_comment_off, w_rec->comment_offs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_WROffset (comment_offs),
|
|
Packit |
b099d7 |
sizeof (w_rec->comment_offs),
|
|
Packit |
b099d7 |
(char*)& w_rec->comment_offs,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (w_rec->creation_offs == (MrmOffset) 0) {
|
|
Packit |
b099d7 |
sprintf (buffer, "no creation callback");
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
sprintf (buffer, "creation callback offset: %X (hex)",
|
|
Packit |
b099d7 |
w_rec->creation_offs);
|
|
Packit |
b099d7 |
off_put (k_creation_off, w_rec->creation_offs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_WROffset (creation_offs),
|
|
Packit |
b099d7 |
sizeof (w_rec->creation_offs),
|
|
Packit |
b099d7 |
(char*)& w_rec->creation_offs,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
unload_stack(( char *) w_rec, w_rec_size, az_src_rec );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
**++
|
|
Packit |
b099d7 |
** FUNCTIONAL DESCRIPTION:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** This function unloads entries placed on a stack and outputs them
|
|
Packit |
b099d7 |
** into the listing. The routine is used by both widgets and gadgets
|
|
Packit |
b099d7 |
** to output their argument, control, and callback lists.
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** rec base of the record being annotated
|
|
Packit |
b099d7 |
** rec_sizr size of the record being annotated
|
|
Packit |
b099d7 |
** az_src_rec address of the source for record being annotated
|
|
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 unload_stack( rec, rec_size, az_src_rec )
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
char *rec;
|
|
Packit |
b099d7 |
int rec_size;
|
|
Packit |
b099d7 |
src_source_record_type *az_src_rec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
char buffer [132], * ptr;
|
|
Packit |
b099d7 |
int child_index;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
while ( ! off_stack_empty ) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
unsigned short off_type, off_offset;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_get (& off_type, & off_offset);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (off_type) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case k_name_off :
|
|
Packit |
b099d7 |
case k_class_off :
|
|
Packit |
b099d7 |
case k_comment_off : {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ptr = (char *) _Pointer(rec, off_offset);
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec, off_offset,
|
|
Packit |
b099d7 |
strlen (ptr) + 1, ptr, NULL );
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case k_unknown_off : {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
unsigned short int len;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Write out everything up to the next offset or the end of the
|
|
Packit |
b099d7 |
record. */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( ! off_stack_empty ) {
|
|
Packit |
b099d7 |
unsigned short int next_type, next_offset;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_get (& next_type, & next_offset);
|
|
Packit |
b099d7 |
off_put (next_type, next_offset);
|
|
Packit |
b099d7 |
len = next_offset - off_offset;
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
len = rec_size - off_offset;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ptr = (char *) _Pointer(rec, off_offset);
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec, off_offset,
|
|
Packit |
b099d7 |
len, ptr, NULL );
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case k_arglist_off : {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
RGMArgListDescPtr argdesc;
|
|
Packit |
b099d7 |
RGMArgumentPtr arg_ptr;
|
|
Packit |
b099d7 |
int j;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
argdesc = (RGMArgListDescPtr) _Pointer(rec, off_offset);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "argument count: %d", argdesc->count);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMArgListDesc, off_offset, count),
|
|
Packit |
b099d7 |
sizeof (argdesc->count),
|
|
Packit |
b099d7 |
(char*)& argdesc->count,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "related argument count: %d", argdesc->extra);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMArgListDesc, off_offset, extra),
|
|
Packit |
b099d7 |
sizeof (argdesc->extra),
|
|
Packit |
b099d7 |
(char*)& argdesc->extra,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_offset = _OffsetArray (RGMArgListDesc, off_offset, args);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (j = 0, arg_ptr = argdesc->args;
|
|
Packit |
b099d7 |
j < argdesc->count;
|
|
Packit |
b099d7 |
j++, arg_ptr++, off_offset += sizeof (RGMArgument)) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (arg_ptr->tag_code != UilMrmUnknownCode )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
sprintf (buffer,
|
|
Packit |
b099d7 |
"(%d) arg type: %s",
|
|
Packit |
b099d7 |
j,
|
|
Packit |
b099d7 |
resource_name_from_code(arg_ptr->tag_code));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ptr = (char *)
|
|
Packit |
b099d7 |
_Pointer(rec,arg_ptr->stg_or_relcode.tag_offs);
|
|
Packit |
b099d7 |
sprintf (buffer,
|
|
Packit |
b099d7 |
"(%d) arg type: %s (user defined)",
|
|
Packit |
b099d7 |
j,
|
|
Packit |
b099d7 |
ptr);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMArgument, off_offset, tag_code),
|
|
Packit |
b099d7 |
sizeof (arg_ptr->tag_code),
|
|
Packit |
b099d7 |
(char*)& arg_ptr->tag_code,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (arg_ptr->stg_or_relcode.tag_offs == (MrmOffset) 0) {
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) no tag offset", j);
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) tag offset: %X (hex)",
|
|
Packit |
b099d7 |
j, arg_ptr->stg_or_relcode.tag_offs);
|
|
Packit |
b099d7 |
off_put (k_name_off, arg_ptr->stg_or_relcode.tag_offs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMArgument, off_offset, stg_or_relcode.tag_offs),
|
|
Packit |
b099d7 |
sizeof (arg_ptr->stg_or_relcode.tag_offs),
|
|
Packit |
b099d7 |
(char*)& arg_ptr->stg_or_relcode.tag_offs,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) type: %s",
|
|
Packit |
b099d7 |
j, type_from_code (arg_ptr->arg_val.rep_type) );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMArgument, off_offset,
|
|
Packit |
b099d7 |
arg_val.rep_type),
|
|
Packit |
b099d7 |
sizeof (arg_ptr->arg_val.rep_type),
|
|
Packit |
b099d7 |
(char*)& arg_ptr->arg_val.rep_type,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) ", j);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
format_arg_value (& arg_ptr->arg_val,
|
|
Packit |
b099d7 |
& buffer [strlen (buffer)]);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMArgument, off_offset,
|
|
Packit |
b099d7 |
arg_val.datum),
|
|
Packit |
b099d7 |
sizeof (arg_ptr->arg_val.datum),
|
|
Packit |
b099d7 |
(char*)& arg_ptr->arg_val.datum,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case k_float_off : {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
double * dptr;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
dptr = (double *) _Pointer (rec, off_offset);
|
|
Packit |
b099d7 |
sprintf (buffer, "floating point value: %g", (* dptr));
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
off_offset,
|
|
Packit |
b099d7 |
sizeof (double), (char*)dptr, buffer );
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* single float data type RAP */
|
|
Packit |
b099d7 |
case k_single_float_off :
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
float *fptr;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
fptr = (float *) _Pointer(rec, off_offset);
|
|
Packit |
b099d7 |
sprintf(buffer, "Single float value: %g", (* fptr));
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
off_offset,
|
|
Packit |
b099d7 |
sizeof (float), (char*)fptr, buffer);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case k_creation_off :
|
|
Packit |
b099d7 |
case k_callback_off : {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
RGMCallbackDescPtr cb_desc_ptr;
|
|
Packit |
b099d7 |
RGMCallbackItemPtr cb_item_ptr;
|
|
Packit |
b099d7 |
int j;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
cb_desc_ptr =
|
|
Packit |
b099d7 |
(RGMCallbackDescPtr) _Pointer (rec, off_offset);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMCallbackDesc, off_offset, validation),
|
|
Packit |
b099d7 |
sizeof (cb_desc_ptr->validation),
|
|
Packit |
b099d7 |
(char*)& cb_desc_ptr->validation,
|
|
Packit |
b099d7 |
"callback descriptor" );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "callback count: %d", cb_desc_ptr->count);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMCallbackDesc, off_offset, count),
|
|
Packit |
b099d7 |
sizeof (cb_desc_ptr->count),
|
|
Packit |
b099d7 |
(char*)& cb_desc_ptr->count,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_offset =
|
|
Packit |
b099d7 |
_OffsetArray (RGMCallbackDesc, off_offset, item);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (j = 0, cb_item_ptr = cb_desc_ptr->item;
|
|
Packit |
b099d7 |
j < cb_desc_ptr->count;
|
|
Packit |
b099d7 |
j++, cb_item_ptr++,
|
|
Packit |
b099d7 |
off_offset += sizeof (RGMCallbackItem)) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer,
|
|
Packit |
b099d7 |
"(%d) routine name offset: %X (hex)",
|
|
Packit |
b099d7 |
j, cb_item_ptr->cb_item.routine);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMCallbackItem, off_offset,
|
|
Packit |
b099d7 |
cb_item.routine),
|
|
Packit |
b099d7 |
#ifndef WORD64
|
|
Packit |
b099d7 |
sizeof (cb_item_ptr->cb_item.routine),
|
|
Packit |
b099d7 |
(char*)& cb_item_ptr->cb_item.routine,
|
|
Packit |
b099d7 |
#else /* 64-bit architecture */
|
|
Packit |
b099d7 |
4,
|
|
Packit |
b099d7 |
(char*)& cb_item_ptr->cb_item,
|
|
Packit |
b099d7 |
#endif /* WORD64 */
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_put (k_name_off, cb_item_ptr->cb_item.routine);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) routine tag type: %s",
|
|
Packit |
b099d7 |
j, type_from_code (
|
|
Packit |
b099d7 |
cb_item_ptr->cb_item.rep_type) );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code
|
|
Packit |
b099d7 |
(az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMCallbackItem, off_offset,
|
|
Packit |
b099d7 |
cb_item.rep_type),
|
|
Packit |
b099d7 |
#ifndef WORD64
|
|
Packit |
b099d7 |
sizeof (cb_item_ptr->cb_item.rep_type),
|
|
Packit |
b099d7 |
(char*)& cb_item_ptr->cb_item.rep_type,
|
|
Packit |
b099d7 |
#else /* 64-bit architecture */
|
|
Packit |
b099d7 |
4,
|
|
Packit |
b099d7 |
(char*)& cb_item_ptr->cb_item + 4,
|
|
Packit |
b099d7 |
#endif /* WORD64 */
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) value: ", j);
|
|
Packit |
b099d7 |
src_append_machine_code
|
|
Packit |
b099d7 |
(az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMCallbackItem, off_offset,
|
|
Packit |
b099d7 |
cb_item.datum),
|
|
Packit |
b099d7 |
sizeof (cb_item_ptr->cb_item.datum),
|
|
Packit |
b099d7 |
(char*)& cb_item_ptr->cb_item.datum,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
} /* for */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case k_resource_off : {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
RGMResourceDescPtr r_desc_ptr;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
r_desc_ptr =
|
|
Packit |
b099d7 |
(RGMResourceDescPtr) _Pointer (rec, off_offset);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "resource descriptor, size: %d",
|
|
Packit |
b099d7 |
r_desc_ptr->size);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMResourceDesc, off_offset, size),
|
|
Packit |
b099d7 |
sizeof (r_desc_ptr->size),
|
|
Packit |
b099d7 |
(char*)& r_desc_ptr->size,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "access: %s",
|
|
Packit |
b099d7 |
access_from_code (r_desc_ptr->access) );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMResourceDesc, off_offset, access),
|
|
Packit |
b099d7 |
sizeof (r_desc_ptr->access),
|
|
Packit |
b099d7 |
(char*)& r_desc_ptr->access,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (r_desc_ptr->type) {
|
|
Packit |
b099d7 |
case URMrIndex:
|
|
Packit |
b099d7 |
sprintf (buffer, "index, offset: %X (hex)",
|
|
Packit |
b099d7 |
_Offset (RGMResourceDesc, off_offset, key) );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_put (k_name_off,
|
|
Packit |
b099d7 |
_Offset (RGMResourceDesc, off_offset, key) );
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case URMrRID:
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "resource ID, offset: %X (hex)",
|
|
Packit |
b099d7 |
_Offset (RGMResourceDesc, off_offset, key) );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_put (k_resource_id_off,
|
|
Packit |
b099d7 |
_Offset (RGMResourceDesc, off_offset, key) );
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
sprintf (buffer, "unknown resource type");
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMResourceDesc, off_offset, type),
|
|
Packit |
b099d7 |
sizeof (r_desc_ptr->type),
|
|
Packit |
b099d7 |
(char*)& r_desc_ptr->type,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "resource group: %s",
|
|
Packit |
b099d7 |
group_from_code (r_desc_ptr->res_group) );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMResourceDesc, off_offset, res_group),
|
|
Packit |
b099d7 |
sizeof (r_desc_ptr->res_group),
|
|
Packit |
b099d7 |
(char*)& r_desc_ptr->res_group,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "resource type: %s",
|
|
Packit |
b099d7 |
(r_desc_ptr->res_group == URMgLiteral) ?
|
|
Packit |
b099d7 |
type_from_code (r_desc_ptr->cvt_type) :
|
|
Packit |
b099d7 |
class_name_from_code (r_desc_ptr->cvt_type) );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMResourceDesc, off_offset, cvt_type),
|
|
Packit |
b099d7 |
sizeof (r_desc_ptr->cvt_type),
|
|
Packit |
b099d7 |
(char*)& r_desc_ptr->cvt_type,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case k_resource_id_off : {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "resource id");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
off_offset,
|
|
Packit |
b099d7 |
sizeof (MrmResource_id),
|
|
Packit |
b099d7 |
(char *) _Pointer (rec, off_offset),
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case k_children_off : {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
RGMChildrenDescPtr c_desc_ptr;
|
|
Packit |
b099d7 |
int j;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
c_desc_ptr = (RGMChildrenDescPtr) _Pointer(rec, off_offset);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "Children count: %d",
|
|
Packit |
b099d7 |
c_desc_ptr->count);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMChildrenDesc, off_offset, count),
|
|
Packit |
b099d7 |
sizeof (c_desc_ptr->count),
|
|
Packit |
b099d7 |
(char*)& c_desc_ptr->count,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_offset =
|
|
Packit |
b099d7 |
_OffsetArray (RGMChildrenDesc, off_offset, child);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (j = 0; j < c_desc_ptr->count;
|
|
Packit |
b099d7 |
j++, off_offset += sizeof (RGMChildDesc)) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_put (k_child_off, off_offset);
|
|
Packit |
b099d7 |
} /* for */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
child_index = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case k_child_off : {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
RGMChildDescPtr c_ptr;
|
|
Packit |
b099d7 |
int j;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
c_ptr = (RGMChildDescPtr) _Pointer(rec, off_offset);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
j = child_index;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
child_index++;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (c_ptr->manage) {
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) managed", j);
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) unmanaged", j);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMChildDesc, off_offset, manage),
|
|
Packit |
b099d7 |
sizeof (c_ptr->manage),
|
|
Packit |
b099d7 |
(char*)& c_ptr->manage,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) access: %s", j,
|
|
Packit |
b099d7 |
access_from_code (c_ptr->access) );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMChildDesc, off_offset, access),
|
|
Packit |
b099d7 |
sizeof (c_ptr->access),
|
|
Packit |
b099d7 |
(char*)& c_ptr->access,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (c_ptr->type) {
|
|
Packit |
b099d7 |
case URMrIndex:
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) index, offset: %X (hex)",
|
|
Packit |
b099d7 |
j, c_ptr->key.index_offs);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMChildDesc, off_offset, type),
|
|
Packit |
b099d7 |
sizeof (c_ptr->type) + sizeof (c_ptr->key),
|
|
Packit |
b099d7 |
(char*)& c_ptr->type,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_put (k_name_off, c_ptr->key.index_offs);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case URMrRID:
|
|
Packit |
b099d7 |
sprintf (buffer,
|
|
Packit |
b099d7 |
"(%d) resource ID, offset: %X (hex)",
|
|
Packit |
b099d7 |
j, _Offset (RGMChildDesc, off_offset, key) );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMChildDesc, off_offset, type),
|
|
Packit |
b099d7 |
sizeof (c_ptr->type),
|
|
Packit |
b099d7 |
(char*)& c_ptr->type,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_put (k_resource_id_off,
|
|
Packit |
b099d7 |
_Offset (RGMChildDesc, off_offset, key) );
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) unknown class", j);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMChildDesc, off_offset, type),
|
|
Packit |
b099d7 |
sizeof (c_ptr->type),
|
|
Packit |
b099d7 |
(char*)& c_ptr->type,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
default : {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
} /* switch */
|
|
Packit |
b099d7 |
} /* for */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code ( az_src_rec, 0, 0, 0, 0 );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
**++
|
|
Packit |
b099d7 |
** FUNCTIONAL DESCRIPTION:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** This function saves the machine code listing information for values.
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** value_entry Symbol node for this value
|
|
Packit |
b099d7 |
** az_context context containing the URM output information.
|
|
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 |
** the machine code is saved in the source record structure for this
|
|
Packit |
b099d7 |
** value.
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
**--
|
|
Packit |
b099d7 |
**/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void save_value_machine_code ( value_entry, az_context )
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sym_value_entry_type * value_entry;
|
|
Packit |
b099d7 |
URMResourceContext * az_context;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
src_source_record_type * az_src_rec;
|
|
Packit |
b099d7 |
char buffer [132], * rc_buffer;
|
|
Packit |
b099d7 |
unsigned short int rc_size;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
az_src_rec = value_entry->header.az_src_rec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (value_entry->resource_id != 0) {
|
|
Packit |
b099d7 |
sprintf (buffer, "Resource ID: %08lX", value_entry->resource_id);
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
0,
|
|
Packit |
b099d7 |
0, 0,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
} else if (value_entry->obj_header.az_name != NULL) {
|
|
Packit |
b099d7 |
sprintf (buffer, "Resource index: %s",
|
|
Packit |
b099d7 |
value_entry->obj_header.az_name->c_text);
|
|
Packit |
b099d7 |
src_append_machine_code
|
|
Packit |
b099d7 |
(az_src_rec,
|
|
Packit |
b099d7 |
0,
|
|
Packit |
b099d7 |
0, 0,
|
|
Packit |
b099d7 |
buffer);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "size: %d, group: %s",
|
|
Packit |
b099d7 |
UrmRCSize (az_context),
|
|
Packit |
b099d7 |
group_from_code (UrmRCGroup (az_context)) );
|
|
Packit |
b099d7 |
src_append_machine_code ( az_src_rec, 0, 0, 0, buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "type: %s, access: %s, locked: ",
|
|
Packit |
b099d7 |
type_from_code (UrmRCType (az_context)),
|
|
Packit |
b099d7 |
access_from_code (UrmRCAccess (az_context)) );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (UrmRCLock (az_context)) {
|
|
Packit |
b099d7 |
strcat (buffer, "true");
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
strcat (buffer, "false");
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code ( az_src_rec, 0, 0, 0, buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
rc_buffer = UrmRCBuffer (az_context);
|
|
Packit |
b099d7 |
rc_size = UrmRCSize (az_context);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
** Case on the type of literal.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (value_entry->b_type)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
case sym_k_bool_value:
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( * (unsigned long *) rc_buffer )
|
|
Packit |
b099d7 |
sprintf (buffer, "value: true");
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
sprintf (buffer, "value: false");
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec, 0, rc_size, rc_buffer, buffer );
|
|
Packit |
b099d7 |
break;
|
|
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 |
|
|
Packit |
b099d7 |
sprintf (buffer, "value: %ld",
|
|
Packit |
b099d7 |
(* (unsigned long *) rc_buffer) );
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec, 0, rc_size, rc_buffer, buffer );
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case sym_k_integer_table_value:
|
|
Packit |
b099d7 |
case sym_k_rgb_value: /* rgb data type RAP */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int index = 0;
|
|
Packit |
b099d7 |
int offset = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (offset = 0; offset < (int)rc_size; offset += sizeof(int), index++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
sprintf (buffer, "value[%d]: %ld",
|
|
Packit |
b099d7 |
index, ((unsigned long *) rc_buffer)[index] );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code
|
|
Packit |
b099d7 |
(az_src_rec, 0, sizeof(int),
|
|
Packit |
b099d7 |
(char*)&(((unsigned long *)rc_buffer)[index]), buffer );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
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 |
sprintf (buffer, "value: %g",
|
|
Packit |
b099d7 |
(* (double *) rc_buffer) );
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec, 0, rc_size, rc_buffer, buffer );
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case sym_k_single_float_value:
|
|
Packit |
b099d7 |
sprintf (buffer, "value: %g",
|
|
Packit |
b099d7 |
(* (float *) rc_buffer));
|
|
Packit |
b099d7 |
src_append_machine_code
|
|
Packit |
b099d7 |
(az_src_rec, 0, rc_size, rc_buffer, buffer );
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case sym_k_char_8_value:
|
|
Packit |
b099d7 |
case sym_k_color_value:
|
|
Packit |
b099d7 |
case sym_k_color_table_value:
|
|
Packit |
b099d7 |
case sym_k_icon_value:
|
|
Packit |
b099d7 |
case sym_k_font_value:
|
|
Packit |
b099d7 |
case sym_k_fontset_value:
|
|
Packit |
b099d7 |
case sym_k_font_table_value:
|
|
Packit |
b099d7 |
case sym_k_reason_value:
|
|
Packit |
b099d7 |
case sym_k_argument_value:
|
|
Packit |
b099d7 |
case sym_k_identifier_value:
|
|
Packit |
b099d7 |
case sym_k_compound_string_value:
|
|
Packit |
b099d7 |
case sym_k_xbitmapfile_value:
|
|
Packit |
b099d7 |
case sym_k_keysym_value:
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
0,
|
|
Packit |
b099d7 |
rc_size, rc_buffer, 0 );
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case sym_k_asciz_table_value:
|
|
Packit |
b099d7 |
case sym_k_string_table_value: {
|
|
Packit |
b099d7 |
RGMTextVectorPtr tv_ptr;
|
|
Packit |
b099d7 |
unsigned short off_type, off_offset, off_cnt;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_offset = 0;
|
|
Packit |
b099d7 |
tv_ptr = (RGMTextVectorPtr) rc_buffer;
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMTextVector, off_offset, validation),
|
|
Packit |
b099d7 |
sizeof (tv_ptr->validation),
|
|
Packit |
b099d7 |
(char*)& tv_ptr->validation,
|
|
Packit |
b099d7 |
"text vector" );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "count: %d", tv_ptr->count);
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMTextVector, off_offset, count),
|
|
Packit |
b099d7 |
sizeof (tv_ptr->count), (char*)& tv_ptr->count,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_offset = _OffsetArray (RGMTextVector, off_offset, item);
|
|
Packit |
b099d7 |
for (i = 0; i < tv_ptr->count;
|
|
Packit |
b099d7 |
i++, off_offset += sizeof (RGMTextEntry)) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_put (k_text_entry_off, off_offset);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_put (k_null_text_entry_off, off_offset);
|
|
Packit |
b099d7 |
off_cnt = 0;
|
|
Packit |
b099d7 |
while ( ! off_stack_empty ) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
RGMTextEntryPtr te_ptr;
|
|
Packit |
b099d7 |
off_get (& off_type, & off_offset);
|
|
Packit |
b099d7 |
switch (off_type) {
|
|
Packit |
b099d7 |
case k_name_off :
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
char *stringPtr = (char *) _Pointer (rc_buffer,off_offset);
|
|
Packit |
b099d7 |
src_append_machine_code (az_src_rec, off_offset,
|
|
Packit |
b099d7 |
ASNstrlen( stringPtr ),
|
|
Packit |
b099d7 |
stringPtr, NULL );
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case k_null_text_entry_off :
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec, off_offset,
|
|
Packit |
b099d7 |
sizeof (RGMTextEntry),
|
|
Packit |
b099d7 |
(char*)_Pointer (rc_buffer, off_offset),
|
|
Packit |
b099d7 |
"end of text vector" );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case k_text_entry_off :
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
te_ptr = (RGMTextEntryPtr)
|
|
Packit |
b099d7 |
_Pointer (rc_buffer, off_offset);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) type: %s, offset: %X (hex)",
|
|
Packit |
b099d7 |
off_cnt,
|
|
Packit |
b099d7 |
type_from_code (te_ptr->text_item.rep_type),
|
|
Packit |
b099d7 |
te_ptr->text_item.offset );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMTextEntry, off_offset,
|
|
Packit |
b099d7 |
text_item),
|
|
Packit |
b099d7 |
sizeof (te_ptr->text_item),
|
|
Packit |
b099d7 |
(char*)& te_ptr->text_item,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_cnt++;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_put (k_name_off, te_ptr->text_item.offset);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) unknown text entry", i);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
off_offset,
|
|
Packit |
b099d7 |
0, 0, buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case sym_k_trans_table_value:
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec, 0, rc_size, rc_buffer, NULL );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
default: {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "unknown value");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
0,
|
|
Packit |
b099d7 |
0, 0, buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code ( az_src_rec, 0, 0, 0, 0 );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
**++
|
|
Packit |
b099d7 |
** FUNCTIONAL DESCRIPTION:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** This function saves the machine code listing information for modules.
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** az_src_rec Source record for this machine code info.
|
|
Packit |
b099d7 |
** az_context context containing the URM output information.
|
|
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 |
** the machine code is saved in the source record structure
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
**--
|
|
Packit |
b099d7 |
**/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void save_module_machine_code ( az_src_rec, az_context )
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_source_record_type * az_src_rec;
|
|
Packit |
b099d7 |
URMResourceContext * az_context;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
RGMModuleDescPtr m_rec;
|
|
Packit |
b099d7 |
RGMTopmostDescPtr t_rec;
|
|
Packit |
b099d7 |
char buffer [132];
|
|
Packit |
b099d7 |
unsigned short off_offset;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_offset = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
m_rec = (RGMModuleDescPtr) UrmRCBuffer (az_context);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMModuleDesc, off_offset, validation),
|
|
Packit |
b099d7 |
sizeof (m_rec->validation), (char*)& m_rec->validation,
|
|
Packit |
b099d7 |
"module record" );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "topmost count: %d", m_rec->count);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_Offset (RGMModuleDesc, off_offset, count),
|
|
Packit |
b099d7 |
sizeof (m_rec->count), (char*)& m_rec->count,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_offset = _OffsetArray (RGMModuleDesc, off_offset, topmost);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i = 0, t_rec = m_rec->topmost;
|
|
Packit |
b099d7 |
i < m_rec->count;
|
|
Packit |
b099d7 |
i++, t_rec++, off_offset += sizeof (RGMTopmostDesc)) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf (buffer, "(%d) %s", i, t_rec->index);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code (
|
|
Packit |
b099d7 |
az_src_rec,
|
|
Packit |
b099d7 |
_OffsetArray (RGMTopmostDesc, off_offset, index),
|
|
Packit |
b099d7 |
strlen(t_rec->index), t_rec->index,
|
|
Packit |
b099d7 |
buffer );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
} /* for */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
src_append_machine_code ( az_src_rec, 0, 0, 0, 0 );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
**++
|
|
Packit |
b099d7 |
** FUNCTIONAL DESCRIPTION:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** This function adds an offset entry to the offset stack for
|
|
Packit |
b099d7 |
** machine code. The entry is inserted in the proper place in
|
|
Packit |
b099d7 |
** the stack depending on the offset value.
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** off_type type of offset entry
|
|
Packit |
b099d7 |
** off_offset offset value for this offset entry
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** IMPLICIT INPUTS:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** off_info_cnt number of offset stack entries
|
|
Packit |
b099d7 |
** off_info_stack stack containing offset entries
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** IMPLICIT OUTPUTS:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** off_info_cnt number of offset stack entries
|
|
Packit |
b099d7 |
** off_info_stack stack containing offset entries
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** FUNCTION VALUE:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** void
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** SIDE EFFECTS:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** the offset info is saved in the offset stack
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
**--
|
|
Packit |
b099d7 |
**/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void off_put
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(unsigned short off_type, unsigned short off_offset)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
off_info_type off_info, * off_info_ptr;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (off_info_cnt >= k_off_stack_size) {
|
|
Packit |
b099d7 |
diag_issue_internal_error ("stack overflow in machine listing");
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_info.w_off_type = off_type;
|
|
Packit |
b099d7 |
off_info.w_off_offset = off_offset;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Insert on the stack before the first entry with a lower offset
|
|
Packit |
b099d7 |
value */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i = 0, off_info_ptr = off_info_stack;
|
|
Packit |
b099d7 |
i < off_info_cnt; i++, off_info_ptr++) {
|
|
Packit |
b099d7 |
if (off_info.w_off_offset > off_info_ptr->w_off_offset) {
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_move ( & off_info_ptr [1], off_info_ptr,
|
|
Packit |
b099d7 |
(off_info_cnt - i) * sizeof (off_info_type) );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(* off_info_ptr) = off_info;
|
|
Packit |
b099d7 |
off_info_cnt++;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
**++
|
|
Packit |
b099d7 |
** FUNCTIONAL DESCRIPTION:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** This function removes an offset entry to the offset stack for
|
|
Packit |
b099d7 |
** machine code.
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** off_type address to receive the type of offset entry
|
|
Packit |
b099d7 |
** off_offset address to receive the offset value for this
|
|
Packit |
b099d7 |
** offset entry
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** IMPLICIT INPUTS:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** off_info_cnt number of offset stack entries
|
|
Packit |
b099d7 |
** off_info_stack stack containing offset entries
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** IMPLICIT OUTPUTS:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** off_info_cnt number of offset stack entries
|
|
Packit |
b099d7 |
** off_info_stack stack containing offset entries
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** FUNCTION VALUE:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** void
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** SIDE EFFECTS:
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
** the offset info is retrieved from the offset stack
|
|
Packit |
b099d7 |
**
|
|
Packit |
b099d7 |
**--
|
|
Packit |
b099d7 |
**/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void off_get (off_type, off_offset)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
unsigned short * off_type;
|
|
Packit |
b099d7 |
unsigned short * off_offset;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
off_info_type * off_info_ptr;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (off_info_cnt <= 0) {
|
|
Packit |
b099d7 |
diag_issue_internal_error ("stack underflow in machine listing");
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Remove from the stack the entry with the lowest offset value */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_info_ptr = & off_info_stack [off_info_cnt - 1];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(* off_type) = off_info_ptr->w_off_type;
|
|
Packit |
b099d7 |
(* off_offset) = off_info_ptr->w_off_offset;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
off_info_cnt--;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
char * type_from_code
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(MrmType type_code)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
*++
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* PROCEDURE DESCRIPTION:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* This procedure returns the string corresponding to a URM type code
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* type type code from RGMrType...
|
|
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 |
* The string corresponding to the type code
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SIDE EFFECTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* none
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*--
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (type_code)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
case MrmRtypeInteger:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_integer_value];
|
|
Packit |
b099d7 |
case MrmRtypeHorizontalInteger:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_horizontal_integer_value];
|
|
Packit |
b099d7 |
case MrmRtypeVerticalInteger:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_vertical_integer_value];
|
|
Packit |
b099d7 |
case MrmRtypeBoolean:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_bool_value];
|
|
Packit |
b099d7 |
case MrmRtypeChar8:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_char_8_value];
|
|
Packit |
b099d7 |
case MrmRtypeChar8Vector:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_asciz_table_value];
|
|
Packit |
b099d7 |
case MrmRtypeCString:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_compound_string_value];
|
|
Packit |
b099d7 |
case MrmRtypeCStringVector:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_string_table_value];
|
|
Packit |
b099d7 |
case MrmRtypeFloat:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_float_value];
|
|
Packit |
b099d7 |
case MrmRtypeHorizontalFloat:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_horizontal_float_value];
|
|
Packit |
b099d7 |
case MrmRtypeVerticalFloat:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_vertical_float_value];
|
|
Packit |
b099d7 |
case MrmRtypeSingleFloat: /* single float data type RAP */
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_single_float_value];
|
|
Packit |
b099d7 |
case MrmRtypeCallback:
|
|
Packit |
b099d7 |
return "callback";
|
|
Packit |
b099d7 |
case MrmRtypePixmapImage:
|
|
Packit |
b099d7 |
return "pixmap image";
|
|
Packit |
b099d7 |
case MrmRtypePixmapDDIF:
|
|
Packit |
b099d7 |
return "pixmap DDIF";
|
|
Packit |
b099d7 |
case MrmRtypeResource:
|
|
Packit |
b099d7 |
return "resource";
|
|
Packit |
b099d7 |
case MrmRtypeAddrName:
|
|
Packit |
b099d7 |
return "addr name";
|
|
Packit |
b099d7 |
case MrmRtypeIconImage:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_icon_value];
|
|
Packit |
b099d7 |
case MrmRtypeFont:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_font_value];
|
|
Packit |
b099d7 |
case MrmRtypeFontSet:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_fontset_value];
|
|
Packit |
b099d7 |
case MrmRtypeFontList:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_font_table_value];
|
|
Packit |
b099d7 |
case MrmRtypeColor:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_color_value];
|
|
Packit |
b099d7 |
case MrmRtypeColorTable:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_color_table_value];
|
|
Packit |
b099d7 |
case MrmRtypeAny:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_any_value];
|
|
Packit |
b099d7 |
case MrmRtypeTransTable:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_trans_table_value];
|
|
Packit |
b099d7 |
case MrmRtypeClassRecName:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_class_rec_name_value];
|
|
Packit |
b099d7 |
case MrmRtypeIntegerVector:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_integer_table_value];
|
|
Packit |
b099d7 |
case MrmRtypeXBitmapFile:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_xbitmapfile_value];
|
|
Packit |
b099d7 |
case MrmRtypeKeysym:
|
|
Packit |
b099d7 |
return uil_datatype_names[sym_k_keysym_value];
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
return "unknown";
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
char * access_from_code
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(MrmFlag access_code)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
*++
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* PROCEDURE DESCRIPTION:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* This procedure returns the string corresponding to a URM access code
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* access_code access code
|
|
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 |
* The string corresponding to the access code
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SIDE EFFECTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* none
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*--
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (access_code) {
|
|
Packit |
b099d7 |
case URMaPublic: return "public";
|
|
Packit |
b099d7 |
case URMaPrivate: return "private";
|
|
Packit |
b099d7 |
default: return "unknown";
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
char * group_from_code
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(MrmGroup group_code)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
*++
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* PROCEDURE DESCRIPTION:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* This procedure returns the string corresponding to a URM group code
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* group_code group code
|
|
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 |
* The string corresponding to the group code
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SIDE EFFECTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* none
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*--
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (group_code) {
|
|
Packit |
b099d7 |
case URMgWidget: return "widget";
|
|
Packit |
b099d7 |
case URMgLiteral: return "literal";
|
|
Packit |
b099d7 |
case URMgResourceSet: return "resource set";
|
|
Packit |
b099d7 |
default: return "unknown";
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void format_arg_value (argval_ptr, buffer)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
RGMArgValuePtr argval_ptr;
|
|
Packit |
b099d7 |
char * buffer;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
*++
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FUNCTION PROTOTYPE
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* PROCEDURE DESCRIPTION:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* This routine formats a value descriptor into the buffer.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* argval_ptr pointer to the argument value descriptor
|
|
Packit |
b099d7 |
* buffer buffer to receive the formatted value
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* IMPLICIT INPUTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* IMPLICIT OUTPUTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FUNCTION VALUE:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SIDE EFFECTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*--
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch ( argval_ptr->rep_type ) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case MrmRtypeInteger:
|
|
Packit |
b099d7 |
case MrmRtypeHorizontalInteger:
|
|
Packit |
b099d7 |
case MrmRtypeVerticalInteger:
|
|
Packit |
b099d7 |
sprintf (buffer, "value: %d", argval_ptr->datum.ival);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case MrmRtypeBoolean:
|
|
Packit |
b099d7 |
if (argval_ptr->datum.ival) {
|
|
Packit |
b099d7 |
sprintf (buffer, "value: true");
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
sprintf (buffer, "value: false");
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case MrmRtypeChar8:
|
|
Packit |
b099d7 |
case MrmRtypeCStringVector:
|
|
Packit |
b099d7 |
case MrmRtypePixmapImage:
|
|
Packit |
b099d7 |
case MrmRtypePixmapDDIF:
|
|
Packit |
b099d7 |
case MrmRtypeCString:
|
|
Packit |
b099d7 |
case MrmRtypeAddrName:
|
|
Packit |
b099d7 |
case MrmRtypeKeysym:
|
|
Packit |
b099d7 |
sprintf (buffer, "offset: %X (hex)", argval_ptr->datum.offset);
|
|
Packit |
b099d7 |
off_put (k_unknown_off, argval_ptr->datum.offset);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case MrmRtypeFloat:
|
|
Packit |
b099d7 |
case MrmRtypeHorizontalFloat:
|
|
Packit |
b099d7 |
case MrmRtypeVerticalFloat:
|
|
Packit |
b099d7 |
sprintf (buffer, "offset: %X (hex)", argval_ptr->datum.offset);
|
|
Packit |
b099d7 |
off_put (k_float_off, argval_ptr->datum.offset);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case MrmRtypeSingleFloat: /* single float data type RAP */
|
|
Packit |
b099d7 |
sprintf (buffer, "offset: %X (hex)", argval_ptr->datum.offset);
|
|
Packit |
b099d7 |
off_put (k_single_float_off, argval_ptr->datum.offset);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case MrmRtypeCallback:
|
|
Packit |
b099d7 |
sprintf (buffer, "offset: %X (hex)", argval_ptr->datum.offset);
|
|
Packit |
b099d7 |
off_put (k_callback_off, argval_ptr->datum.offset);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case MrmRtypeResource:
|
|
Packit |
b099d7 |
sprintf (buffer, "offset: %X (hex)", argval_ptr->datum.offset);
|
|
Packit |
b099d7 |
off_put (k_resource_off, argval_ptr->datum.offset);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
sprintf (buffer, "value unknown");
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
char * class_name_from_code
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(MrmCode class)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
*++
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* PROCEDURE DESCRIPTION:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* This procedure returns the string corresponding to a URM class code
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* class class code from URMwc...
|
|
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 |
* The string corresponding to the class code
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SIDE EFFECTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* none
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*--
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
int sym_code;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Find the sym_k code for the class, then return its name
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
for ( sym_code=sym_k_error_object+1;
|
|
Packit |
b099d7 |
sym_code<=uil_max_object;
|
|
Packit |
b099d7 |
sym_code++ )
|
|
Packit |
b099d7 |
if ( uil_widget_compr[sym_code] == class )
|
|
Packit |
b099d7 |
return uil_widget_names[sym_code];
|
|
Packit |
b099d7 |
return "unknown";
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
char * resource_name_from_code
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(MrmCode resource)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
*++
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* PROCEDURE DESCRIPTION:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* This procedure returns the string corresponding to a compression code
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FORMAL PARAMETERS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* resource compression code for argument or reason
|
|
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 |
* The string corresponding to the resource code
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SIDE EFFECTS:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* none
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*--
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
int sym_code;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Find the sym_k code for the resource, then return its name
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
for ( sym_code=0 ; sym_code<=uil_max_arg ; sym_code++ )
|
|
Packit |
b099d7 |
if ( uil_arg_compr[sym_code] == resource )
|
|
Packit |
b099d7 |
return uil_argument_names[sym_code];
|
|
Packit |
b099d7 |
for ( sym_code=0 ; sym_code<=uil_max_reason ; sym_code++ )
|
|
Packit |
b099d7 |
if ( uil_reas_compr[sym_code] == resource )
|
|
Packit |
b099d7 |
return uil_reason_names[sym_code];
|
|
Packit |
b099d7 |
for ( sym_code=0 ; sym_code<=uil_max_child ; sym_code++ )
|
|
Packit |
b099d7 |
if ( uil_child_compr[sym_code] == resource )
|
|
Packit |
b099d7 |
return uil_child_names[sym_code];
|
|
Packit |
b099d7 |
return "unknown";
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|