PAT_DEBUG(3)

NAME

pat_debug - PAT structures displayer-debugger

SYNOPSYS

void pat_debug (pnt, type)
void *pnt;
char *type;

PARAMETERS

pnt pointer of the structure to be displayed

type
    name of the structure to be displayed. type can be any of "paseq", "pagrp", "paiol", "papat", "paini", "pacom", "paevt"

DESCRIPTION

When called, pat_debug() first displaies the structure pointed by pnt then, prints the line:
    COMMAND >>
and waits for a command being entered by the user. If pnt is a NULL pointer or type doesn't represent a legal structure, pat_debug() exits without making any action.

To display the structure, pat_debug() prints a line per field. Fields containing immediate value (integer, character, string, ...) are displayed in the following form:
    name_of_the_field : value_of_the_field

Fields containing a pointer are marked by the symbol ->. If the pointer is a NULL pointer, the field is displayed as:
    -> name_of_the_field :
In the other case, pat_debug() prints :
    -> name_of_the_field : AVAILABLE

Two kinds of command can be introduced by the user.

A command can be the name of a field containing a pointer. The command is accepted only if the pointer is not a NULL pointer (field displayed as "AVAILABLE"). Reading such a command, pat_debug() first pushes the current structure on its stack then, displaies the structure pointed by the named field.

The second kind of commands are predefined commands :

    _exit
        to exit from the debugger

    _up to return to the previous structure

    _stop
        to put a stop mark on the current structure

    _top
        to return to the first structure (pointed by pnt)

    _back
        to return to the last structure marked with a stop mark

In addition to these commands, the command . (dot) can be used to repete the last command.

EXAMPLE

#include <pat106.h>
struct paseq *paseq_pnt;
pat_debug (paseq_pnt , "paseq");

NOTES

Scanning structures, pat_debug() uses an internal stack. The message "stack overflow" is printed if too many structures have been pushed on the stack.

SEE ALSO

libpat(3)