Files
mercury/trace/mercury_trace_cmds.h
Mark Brown d465fa53cb Update the COPYING.LIB file and references to it.
Discussion of these changes can be found on the Mercury developers
mailing list archives from June 2018.

COPYING.LIB:
    Add a special linking exception to the LGPL.

*:
    Update references to COPYING.LIB.

    Clean up some minor errors that have accumulated in copyright
    messages.
2018-06-09 17:43:12 +10:00

54 lines
1.8 KiB
C

// vim: ts=4 sw=4 expandtab ft=c
// Copyright (C) 1998-2006 The University of Melbourne.
// Copyright (C) 2014, 2016, 2018 The Mercury team.
// This file is distributed under the terms specified in COPYING.LIB.
#include "mercury_std.h"
#include "mercury_types.h"
#include "mercury_trace.h"
#include "mercury_trace_completion.h"
#ifndef MERCURY_TRACE_CMDS_H
#define MERCURY_TRACE_CMDS_H
typedef enum {
KEEP_INTERACTING,
STOP_INTERACTING
} MR_Next;
typedef MR_Next MR_TraceCmdFunc(char **words, int word_count,
MR_TraceCmdInfo *cmd, MR_EventInfo *event_info,
MR_Code **jumpaddr);
// We keep a table of the available commands. The information we have about
// each command is stored in a value of type MR_TraceCmdTableEntry.
//
// The name of the command itself is stored in the name field; the category
// field contains name of the category to which the command belongs,
// e.g. "browsing".
//
// The code that the command loop should execute to handle a command of a given
// type is the function pointed to by the function field.
//
// Some commands take fixed strings as arguments. The arg_strings field
// is a NULL terminated array of those strings, or NULL if there are
// no fixed strings.
//
// The arg_completer field contains the address of a function for more
// arbitrary completion, e.g. on predicate names. This field should not be
// null; if the command cannot use a completion function, the field should
// contain MR_trace_null_completer.
typedef struct
{
const char *MR_cmd_category;
const char *MR_cmd_name;
MR_TraceCmdFunc *MR_cmd_function;
const char *const *MR_cmd_arg_strings;
const MR_MakeCompleter MR_cmd_arg_completer;
} MR_TraceCmdTableEntry;
#endif // MERCURY_TRACE_CMDS_H