9.4.1 Namespaces
A namespace is represented by a NAMESPACE_DECL
node.
However, except for the fact that it is distinguished as the root of the representation, the global namespace is no different from any other namespace. Thus, in what follows, we describe namespaces generally, rather than the global namespace in particular.
The following macros and functions can be used on a NAMESPACE_DECL
:
DECL_NAME
- This macro is used to obtain the
IDENTIFIER_NODE
corresponding to the unqualified name of the name of the namespace (see Identifiers). The name of the global namespace is `::', even though in C++ the global namespace is unnamed. However, you should use comparison withglobal_namespace
, rather thanDECL_NAME
to determine whether or not a namespace is the global one. An unnamed namespace will have aDECL_NAME
equal toanonymous_namespace_name
. Within a single translation unit, all unnamed namespaces will have the same name. DECL_CONTEXT
- This macro returns the enclosing namespace. The
DECL_CONTEXT
for theglobal_namespace
isNULL_TREE
. DECL_NAMESPACE_ALIAS
- If this declaration is for a namespace alias, then
DECL_NAMESPACE_ALIAS
is the namespace for which this one is an alias.Do not attempt to use
cp_namespace_decls
for a namespace which is an alias. Instead, followDECL_NAMESPACE_ALIAS
links until you reach an ordinary, non-alias, namespace, and callcp_namespace_decls
there. DECL_NAMESPACE_STD_P
- This predicate holds if the namespace is the special
::std
namespace. cp_namespace_decls
- This function will return the declarations contained in the namespace,
including types, overloaded functions, other namespaces, and so forth.
If there are no declarations, this function will return
NULL_TREE
. The declarations are connected through theirTREE_CHAIN
fields.Although most entries on this list will be declarations,
TREE_LIST
nodes may also appear. In this case, theTREE_VALUE
will be anOVERLOAD
. The value of theTREE_PURPOSE
is unspecified; back ends should ignore this value. As with the other kinds of declarations returned bycp_namespace_decls
, theTREE_CHAIN
will point to the next declaration in this list.For more information on the kinds of declarations that can occur on this list, See Declarations. Some declarations will not appear on this list. In particular, no
FIELD_DECL
,LABEL_DECL
, orPARM_DECL
nodes will appear here.This function cannot be used with namespaces that have
DECL_NAMESPACE_ALIAS
set.