33 lines · cpp
1//===- DeclGroup.cpp - Classes for representing groups of Decls -----------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file defines the DeclGroup and DeclGroupRef classes.10//11//===----------------------------------------------------------------------===//12 13#include "clang/AST/DeclGroup.h"14#include "clang/AST/ASTContext.h"15#include <cassert>16#include <memory>17 18using namespace clang;19 20DeclGroup* DeclGroup::Create(ASTContext &C, Decl **Decls, unsigned NumDecls) {21 assert(NumDecls > 1 && "Invalid DeclGroup");22 unsigned Size = totalSizeToAlloc<Decl *>(NumDecls);23 void *Mem = C.Allocate(Size, alignof(DeclGroup));24 new (Mem) DeclGroup(NumDecls, Decls);25 return static_cast<DeclGroup*>(Mem);26}27 28DeclGroup::DeclGroup(unsigned numdecls, Decl** decls) : NumDecls(numdecls) {29 assert(numdecls > 0);30 assert(decls);31 std::uninitialized_copy(decls, decls + numdecls, getTrailingObjects());32}33