blob: e5506562bb5d00f7832ab03533f220616921ab56 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2005 The Regents of the University of California.
* This material was produced under U.S. Government contract W-7405-ENG-36
* for Los Alamos National Laboratory, which is operated by the University
* of California for the U.S. Department of Energy. The U.S. Government has
* rights to use, reproduce, and distribute this software. NEITHER THE
* GOVERNMENT NOR THE UNIVERSITY MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR
* ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE. If software is modified
* to produce derivative works, such modified software should be clearly
* marked, so as not to confuse it with the version available from LANL.
*
* Additionally, this program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* LA-CC 04-115
******************************************************************************/
#ifndef _MICOMMAND_H_
#define _MICOMMAND_H_
#include "MIResultRecord.h"
#include "MIOutput.h"
struct MISession;
struct MICommand {
char * command; /* command to execute */
char ** options; /* command options */
int num_options; /* number of options for command */
int opt_size; /* allocated size of options */
int completed; /* command has been completed */
int expected_class;
MIOutput * output; /* result from completed command */
void (*callback)(MIResultRecord *, void *); /* command completed callback */
void * cb_data; /* callback data */
};
typedef struct MICommand MICommand;
extern MICommand *MICommandNew(char *, int);
extern void MICommandFree(MICommand *cmd);
extern void MICommandAddOption(MICommand *cmd, char *opt, char *arg);
extern int MICommandCompleted(MICommand *cmd);
extern int MICommandResultOK(MICommand *cmd);
extern MIResultRecord *MICommandResult(MICommand *cmd);
extern int MICommandResultClass(MICommand *cmd);
extern char *MICommandResultErrorMessage(MICommand *cmd);
extern void MICommandRegisterCallback(MICommand *cmd, void (*callback)(MIResultRecord *, void *), void *data);
extern char *MICommandToString(MICommand *cmd);
/*
* -gdb-* commands
*/
extern MICommand *MIGDBSet(char *, char *);
extern MICommand *MIGDBExit(void);
extern MICommand *MIGDBShowEndian(void);
extern MICommand *MIGDBVersion(void);
/*
* -exec-* commands
*/
extern MICommand *MIExecArguments(char **);
extern MICommand *MIExecContinue(void);
extern MICommand *MIExecRun(void);
extern MICommand *MIExecStep(int);
extern MICommand *MIExecNext(int);
extern MICommand *MIExecFinish(void);
extern MICommand *MIExecInterrupt(void);
extern MICommand *MIExecUtil(char*);
/*
* -break-* commands
*/
extern MICommand *MIBreakInsert(int isTemporary, int isHardware, char *condition, int ignoreCount, char *line, int tid);
extern MICommand *MIBreakDelete(int nbps, int *bpids);
extern MICommand *MIBreakDisable(int nbps, int *bpids);
extern MICommand *MIBreakEnable(int nbps, int *bpids);
extern MICommand *MIBreakCondition(int nbps, int *bpids, char *expr);
extern MICommand *MIBreakWatch(char *expr, int access, int read);
extern MICommand *MIBreakAfter(int nbps, int *bpids, int ignoreCount);
/*
* -stack-* commands
*/
extern MICommand *MIStackSelectFrame(int level);
extern MICommand *MIStackListFrames(int low, int high);
extern MICommand *MIStackListAllFrames(void);
extern MICommand *MIStackListLocals(int vals);
extern MICommand *MIStackListArguments(int vals, int low, int high);
extern MICommand *MIStackListAllArguments(int vals);
extern MICommand *MIStackInfoFrame(void);
extern MICommand *MIStackInfoDepth(void);
extern MICommand *CLIFrame(void);
/*
* -var-* commands
*/
extern MICommand *MIVarCreate(char *name, char *frame, char *expr);
extern MICommand *MIVarDelete(char *name);
extern MICommand *MIVarListChildren(char *name);
extern MICommand *MIVarEvaluateExpression(char *name);
extern MICommand *MIDataEvaluateExpression(char *name);
extern MICommand *MIVarUpdate(char *name);
extern MICommand *MIVarInfoType(char *name);
extern MICommand *MIVarInfoNumChildren(char *name);
/*
* -thread-* commands
*/
extern MICommand *CLIInfoThreads(void);
extern MICommand *MIThreadSelect(int threadNum);
/*
* -data-* commands
*/
extern MICommand *MIDataReadMemory(long, char *, char *, int, int, int, char *);
extern MICommand *MIDataWriteMemory(long offset, char * address, char * format, int wordSize, char * value);
#ifdef __APPLE__
extern MICommand *MIPidInfo(void);
#endif /* __APPLE__ */
/*
* Non-MI commands
*/
extern MICommand *CLIPType(char *name);
/*
* signal commands
*/
extern MICommand *CLIListSignals(char *);
extern MICommand *CLISignalInfo(char *);
extern MICommand *CLIHandle(char *);
#endif /* _MICOMMAND_H_ */