macroscope.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /* Interface to functions for deciding which macros are currently in scope.
  2. Copyright (C) 2002-2022 Free Software Foundation, Inc.
  3. Contributed by Red Hat, Inc.
  4. This file is part of GDB.
  5. This program is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 3 of the License, or
  8. (at your option) any later version.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with this program. If not, see <http://www.gnu.org/licenses/>. */
  15. #ifndef MACROSCOPE_H
  16. #define MACROSCOPE_H
  17. #include "macrotab.h"
  18. #include "symtab.h"
  19. /* The table of macros defined by the user. */
  20. extern struct macro_table *macro_user_macros;
  21. /* All the information we need to decide which macro definitions are
  22. in scope: a source file (either a main source file or an
  23. #inclusion), and a line number in that file. */
  24. struct macro_scope {
  25. struct macro_source_file *file;
  26. int line;
  27. };
  28. /* Return a `struct macro_scope' object corresponding to the symtab
  29. and line given in SAL. If we have no macro information for that
  30. location, or if SAL's pc is zero, return zero. */
  31. gdb::unique_xmalloc_ptr<struct macro_scope> sal_macro_scope
  32. (struct symtab_and_line sal);
  33. /* Return a `struct macro_scope' object representing just the
  34. user-defined macros. */
  35. gdb::unique_xmalloc_ptr<struct macro_scope> user_macro_scope (void);
  36. /* Return a `struct macro_scope' object describing the scope the `macro
  37. expand' and `macro expand-once' commands should use for looking up
  38. macros. If we have a selected frame, this is the source location of
  39. its PC; otherwise, this is the last listing position.
  40. If we have no macro information for the current location, return
  41. the user macro scope. */
  42. gdb::unique_xmalloc_ptr<struct macro_scope> default_macro_scope (void);
  43. /* Look up the definition of the macro named NAME in scope at the source
  44. location given by MS. */
  45. macro_definition *standard_macro_lookup (const char *name,
  46. const macro_scope &ms);
  47. #endif /* MACROSCOPE_H */