13#ifndef LLVM_CLANG_AST_DECLGROUP_H
14#define LLVM_CLANG_AST_DECLGROUP_H
16#include "llvm/Support/TrailingObjects.h"
25class DeclGroup final :
private llvm::TrailingObjects<DeclGroup, Decl *> {
27 unsigned NumDecls = 0;
38 unsigned size()
const {
return NumDecls; }
41 assert (i < NumDecls &&
"Out-of-bounds access.");
42 return getTrailingObjects<Decl *>()[i];
46 assert (i < NumDecls &&
"Out-of-bounds access.");
47 return getTrailingObjects<Decl *>()[i];
54 enum Kind { SingleDeclKind=0x0, DeclGroupKind=0x1, Mask=0x1 };
58 Kind getKind()
const {
59 return (Kind) (
reinterpret_cast<uintptr_t>(
D) & Mask);
79 bool isNull()
const {
return D ==
nullptr; }
81 bool isDeclGroup()
const {
return getKind() == DeclGroupKind; }
101 return D ? &
D :
nullptr;
107 return D ? &
D+1 :
nullptr;
109 return &G[0] + G.
size();
114 return D ? &
D :
nullptr;
120 return D ? &
D+1 :
nullptr;
122 return &G[0] + G.
size();