mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-01 14:03:56 +08:00
33b5899fc0
Fix a few typos: - implemention -> implementation - convertion(s) -> conversion(s) - backlashes -> backslashes - signoring -> ignoring - (un)ambigious -> (un)ambiguous - occured -> occurred - hidding -> hiding - temporarilly -> temporarily - immediatelly -> immediately - sillyness -> silliness - similiar -> similar - porkuser -> pokeuser - thats -> that - alway -> always - supercede -> supersede - accomodate -> accommodate - aquire -> acquire - priveleged -> privileged - priviliged -> privileged - priviledges -> privileges - privilige -> privilege - recieve -> receive - (p)refered -> (p)referred - succesfully -> successfully - successfuly -> successfully - responsability -> responsibility - wether -> whether - wich -> which - disasbleable -> disableable - descriminant -> discriminant - construcstor -> constructor - underlaying -> underlying - underyling -> underlying - structureal -> structural - appearences -> appearances - terciarily -> tertiarily - resgisters -> registers - reacheable -> reachable - likelyhood -> likelihood - intepreter -> interpreter - disassemly -> disassembly - covnersion -> conversion - conviently -> conveniently - atttribute -> attribute - struction -> struct - resonable -> reasonable - popupated -> populated - namespaxe -> namespace - intialize -> initialize - identifer(s) -> identifier(s) - expection -> exception - exectuted -> executed - dungerous -> dangerous - dissapear -> disappear - completly -> completely - (inter)changable -> (inter)changeable - beakpoint -> breakpoint - automativ -> automatic - alocating -> allocating - agressive -> aggressive - writting -> writing - reguires -> requires - registed -> registered - recuding -> reducing - opeartor -> operator - ommitted -> omitted - modifing -> modifying - intances -> instances - imbedded -> embedded - gdbaarch -> gdbarch - exection -> execution - direcive -> directive - demanged -> demangled - decidely -> decidedly - argments -> arguments - agrument -> argument - amespace -> namespace - targtet -> target - supress(ed) -> suppress(ed) - startum -> stratum - squence -> sequence - prompty -> prompt - overlow -> overflow - memember -> member - languge -> language - geneate -> generate - funcion -> function - exising -> existing - dinking -> syncing - destroh -> destroy - clenaed -> cleaned - changep -> changedp (name of variable) - arround -> around - aproach -> approach - whould -> would - symobl -> symbol - recuse -> recurse - outter -> outer - freeds -> frees - contex -> context Tested on x86_64-linux. Reviewed-By: Tom Tromey <tom@tromey.com>
132 lines
4.5 KiB
C++
132 lines
4.5 KiB
C++
/* Code dealing with "using" directives for GDB.
|
|
Copyright (C) 2003-2023 Free Software Foundation, 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 3 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, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#ifndef NAMESPACE_H
|
|
#define NAMESPACE_H
|
|
|
|
#include "gdbsupport/gdb_vecs.h"
|
|
#include "gdbsupport/gdb_obstack.h"
|
|
|
|
/* This struct is designed to store data from using directives. It
|
|
says that names from namespace IMPORT_SRC should be visible within
|
|
namespace IMPORT_DEST. These form a linked list; NEXT is the next
|
|
element of the list. If the imported namespace or declaration has
|
|
been aliased within the IMPORT_DEST namespace, ALIAS is set to a
|
|
string representing the alias. Otherwise, ALIAS is NULL.
|
|
DECLARATION is the name of the imported declaration, if this import
|
|
statement represents one. Otherwise DECLARATION is NULL and this
|
|
import statement represents a namespace. DECL_LINE is the line
|
|
where the using directive is written in the source code.
|
|
|
|
C++: using namespace A;
|
|
Fortran: use A
|
|
import_src = "A"
|
|
import_dest = local scope of the import statement even such as ""
|
|
alias = NULL
|
|
declaration = NULL
|
|
excludes = NULL
|
|
|
|
C++: using A::x;
|
|
Fortran: use A, only: x
|
|
import_src = "A"
|
|
import_dest = local scope of the import statement even such as ""
|
|
alias = NULL
|
|
declaration = "x"
|
|
excludes = NULL
|
|
The declaration will get imported as import_dest::x.
|
|
|
|
C++ has no way to import all names except those listed ones.
|
|
Fortran: use A, localname => x
|
|
import_src = "A"
|
|
import_dest = local scope of the import statement even such as ""
|
|
alias = "localname"
|
|
declaration = "x"
|
|
excludes = NULL
|
|
+
|
|
import_src = "A"
|
|
import_dest = local scope of the import statement even such as ""
|
|
alias = NULL
|
|
declaration = NULL
|
|
excludes = ["x"]
|
|
All the entries of A get imported except of "x". "x" gets imported as
|
|
"localname". "x" is not defined as a local name by this statement.
|
|
|
|
C++: namespace LOCALNS = A;
|
|
Fortran has no way to address non-local namespace/module.
|
|
import_src = "A"
|
|
import_dest = local scope of the import statement even such as ""
|
|
alias = "LOCALNS"
|
|
declaration = NULL
|
|
excludes = NULL
|
|
The namespace will get imported as the import_dest::LOCALNS
|
|
namespace.
|
|
|
|
C++ cannot express it, it would be something like: using localname
|
|
= A::x;
|
|
Fortran: use A, only localname => x
|
|
import_src = "A"
|
|
import_dest = local scope of the import statement even such as ""
|
|
alias = "localname"
|
|
declaration = "x"
|
|
excludes = NULL
|
|
The declaration will get imported as localname or
|
|
`import_dest`localname. */
|
|
|
|
struct using_direct
|
|
{
|
|
const char *import_src;
|
|
const char *import_dest;
|
|
|
|
const char *alias;
|
|
const char *declaration;
|
|
|
|
struct using_direct *next;
|
|
|
|
/* The line where the using directive was declared on the source file.
|
|
This is used to check if the using directive is already active at the
|
|
point where the inferior is stopped. */
|
|
unsigned int decl_line;
|
|
|
|
/* Used during import search to temporarily mark this node as
|
|
searched. */
|
|
int searched;
|
|
|
|
/* USING_DIRECT has variable allocation size according to the number of
|
|
EXCLUDES entries, the last entry is NULL. */
|
|
const char *excludes[1];
|
|
|
|
/* Returns true if the using_directive USING_DIR is valid in CURR_LINE.
|
|
Because current GCC (at least version 12.2) sets the decl_line as
|
|
the last line in the current block, we need to take this into
|
|
consideration when checking the validity, by comparing it to
|
|
BOUNDARY, the last line of the current block. */
|
|
bool valid_line (unsigned int boundary) const;
|
|
};
|
|
|
|
extern void add_using_directive (struct using_direct **using_directives,
|
|
const char *dest,
|
|
const char *src,
|
|
const char *alias,
|
|
const char *declaration,
|
|
const std::vector<const char *> &excludes,
|
|
const unsigned int decl_line,
|
|
int copy_names,
|
|
struct obstack *obstack);
|
|
|
|
#endif /* NAMESPACE_H */
|