From 6821892ed4f6f609e09b137d7163c712ded7a0be Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Thu, 16 May 2002 21:15:53 +0000 Subject: Add commands for manually expanding macros and showing their definitions. * macrocmd.c, macroscope.c, macroscope.h: New files. * Makefile.in (SFILES): Add macrocmd.c, macroscope.c. (macroscope_h): New variable. (HFILES_NO_SRCDIR): Add macroscope.h. (COMMON_OBS): Add macrocmd.o, macroscope.o. (macroscope.o, macrocmd.o): New rules. --- gdb/macroscope.h | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 gdb/macroscope.h (limited to 'gdb/macroscope.h') diff --git a/gdb/macroscope.h b/gdb/macroscope.h new file mode 100644 index 0000000..fc10b6d --- /dev/null +++ b/gdb/macroscope.h @@ -0,0 +1,63 @@ +/* Interface to functions for deciding which macros are currently in scope. + Copyright 2002 Free Software Foundation, Inc. + Contributed by Red Hat, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef MACROSCOPE_H +#define MACROSCOPE_H + +#include "macrotab.h" +#include "symtab.h" + + +/* All the information we need to decide which macro definitions are + in scope: a source file (either a main source file or an + #inclusion), and a line number in that file. */ +struct macro_scope { + struct macro_source_file *file; + int line; +}; + + +/* Return a `struct macro_scope' object corresponding to the symtab + and line given in SAL. If we have no macro information for that + location, or if SAL's pc is zero, return zero. */ +struct macro_scope *sal_macro_scope (struct symtab_and_line sal); + + +/* Return a `struct macro_scope' object describing the scope the `macro + expand' and `macro expand-once' commands should use for looking up + macros. If we have a selected frame, this is the source location of + its PC; otherwise, this is the last listing position. + + If we have no macro information for the current location, return zero. + + The object returned is allocated using xmalloc; the caller is + responsible for freeing it. */ +struct macro_scope *default_macro_scope (void); + + +/* Look up the definition of the macro named NAME in scope at the source + location given by BATON, which must be a pointer to a `struct + macro_scope' structure. This function is suitable for use as + a macro_lookup_ftype function. */ +struct macro_definition *standard_macro_lookup (const char *name, void *baton); + + +#endif /* MACROSCOPE_H */ -- cgit v1.1