brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · fad52ff Raw
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