18998f10eSEugene Zelenko //===- DeclGroup.cpp - Classes for representing groups of Decls -----------===//
2a5e23f6bSTed Kremenek //
3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6a5e23f6bSTed Kremenek //
7a5e23f6bSTed Kremenek //===----------------------------------------------------------------------===//
8a5e23f6bSTed Kremenek //
94feb36deSDouglas Gregor // This file defines the DeclGroup and DeclGroupRef classes.
10a5e23f6bSTed Kremenek //
11a5e23f6bSTed Kremenek //===----------------------------------------------------------------------===//
12a5e23f6bSTed Kremenek
13a5e23f6bSTed Kremenek #include "clang/AST/DeclGroup.h"
14a5e23f6bSTed Kremenek #include "clang/AST/ASTContext.h"
158998f10eSEugene Zelenko #include <cassert>
168998f10eSEugene Zelenko #include <memory>
178998f10eSEugene Zelenko
18a5e23f6bSTed Kremenek using namespace clang;
19a5e23f6bSTed Kremenek
Create(ASTContext & C,Decl ** Decls,unsigned NumDecls)205bbb3c8aSChris Lattner DeclGroup* DeclGroup::Create(ASTContext &C, Decl **Decls, unsigned NumDecls) {
215bbb3c8aSChris Lattner assert(NumDecls > 1 && "Invalid DeclGroup");
22967eb20eSJames Y Knight unsigned Size = totalSizeToAlloc<Decl *>(NumDecls);
23c3f89253SBenjamin Kramer void *Mem = C.Allocate(Size, alignof(DeclGroup));
245bbb3c8aSChris Lattner new (Mem) DeclGroup(NumDecls, Decls);
255bbb3c8aSChris Lattner return static_cast<DeclGroup*>(Mem);
26a5e23f6bSTed Kremenek }
27a5e23f6bSTed Kremenek
DeclGroup(unsigned numdecls,Decl ** decls)2812183e25STed Kremenek DeclGroup::DeclGroup(unsigned numdecls, Decl** decls) : NumDecls(numdecls) {
29a5e23f6bSTed Kremenek assert(numdecls > 0);
30a5e23f6bSTed Kremenek assert(decls);
31967eb20eSJames Y Knight std::uninitialized_copy(decls, decls + numdecls,
32967eb20eSJames Y Knight getTrailingObjects<Decl *>());
33a5e23f6bSTed Kremenek }
34