1
2 /* Compiler implementation of the D programming language
3 * Copyright (C) 1999-2023 by The D Language Foundation, All Rights Reserved
4 * written by Walter Bright
5 * https://www.digitalmars.com
6 * Distributed under the Boost Software License, Version 1.0.
7 * https://www.boost.org/LICENSE_1_0.txt
8 * https://github.com/dlang/dmd/blob/master/src/dmd/nspace.h
9 */
10
11 #pragma once
12
13 #include "dsymbol.h"
14
15 /* A namespace corresponding to a C++ namespace.
16 * Implies extern(C++).
17 */
18
19 class Nspace final : public ScopeDsymbol
20 {
21 public:
22 Expression *identExp;
23 Nspace *syntaxCopy(Dsymbol *s) override;
24 void addMember(Scope *sc, ScopeDsymbol *sds) override;
25 void setScope(Scope *sc) override;
26 Dsymbol *search(const Loc &loc, Identifier *ident, int flags = SearchLocalsOnly) override;
27 bool hasPointers() override;
28 void setFieldOffset(AggregateDeclaration *ad, FieldState& fieldState, bool isunion) override;
29 const char *kind() const override;
30 Nspace *isNspace() override { return this; }
31 void accept(Visitor *v) override { v->visit(this); }
32 };