Give ObjCProtocolDecl a Create method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48410 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2008-03-16 01:23:04 +00:00
Родитель f962808120
Коммит cca59d77c4
3 изменённых файлов: 22 добавлений и 10 удалений

Просмотреть файл

@ -226,8 +226,7 @@ class ObjCInterfaceDecl : public TypeDecl {
SourceLocation AtEndLoc; // marks the end of the entire interface.
ObjCInterfaceDecl(SourceLocation atLoc, unsigned numRefProtos,
IdentifierInfo *Id, bool FD = false,
bool isInternal = false)
IdentifierInfo *Id, bool FD, bool isInternal)
: TypeDecl(ObjCInterface, atLoc, Id, 0), SuperClass(0),
ReferencedProtocols(0), NumReferencedProtocols(0), Ivars(0),
NumIvars(-1),
@ -429,16 +428,21 @@ class ObjCProtocolDecl : public NamedDecl {
SourceLocation EndLoc; // marks the '>' or identifier.
SourceLocation AtEndLoc; // marks the end of the entire interface.
public:
ObjCProtocolDecl(SourceLocation L, unsigned numRefProtos,
IdentifierInfo *Id, bool FD = false)
IdentifierInfo *Id, bool FD)
: NamedDecl(ObjCProtocol, L, Id),
ReferencedProtocols(0), NumReferencedProtocols(0),
InstanceMethods(0), NumInstanceMethods(-1),
ClassMethods(0), NumClassMethods(-1),
isForwardProtoDecl(FD) {
AllocReferencedProtocols(numRefProtos);
}
AllocReferencedProtocols(numRefProtos);
}
public:
static ObjCProtocolDecl *Create(ASTContext &C, SourceLocation L,
unsigned numRefProtos, IdentifierInfo *Id,
bool ForwardDecl = false);
void AllocReferencedProtocols(unsigned numRefProtos) {
if (numRefProtos) {
ReferencedProtocols = new ObjCProtocolDecl*[numRefProtos];

Просмотреть файл

@ -47,6 +47,14 @@ ObjCIvarDecl *ObjCIvarDecl::Create(ASTContext &C, SourceLocation L,
return new (Mem) ObjCIvarDecl(L, Id, T);
}
ObjCProtocolDecl *ObjCProtocolDecl::Create(ASTContext &C, SourceLocation L,
unsigned numRefProtos,
IdentifierInfo *Id,
bool ForwardDecl) {
void *Mem = C.getAllocator().Allocate<ObjCProtocolDecl>();
return new (Mem) ObjCProtocolDecl(L, numRefProtos, Id, ForwardDecl);
}
//===----------------------------------------------------------------------===//
// Objective-C Decl Implementation

Просмотреть файл

@ -211,10 +211,10 @@ Sema::DeclTy *Sema::ActOnStartProtocolInterface(
}
}
else {
PDecl = new ObjCProtocolDecl(AtProtoInterfaceLoc, NumProtoRefs,
ProtocolName);
PDecl = ObjCProtocolDecl::Create(Context, AtProtoInterfaceLoc, NumProtoRefs,
ProtocolName);
ObjCProtocols[ProtocolName] = PDecl;
}
}
if (NumProtoRefs) {
/// Check then save referenced protocols
@ -260,7 +260,7 @@ Sema::ActOnForwardProtocolDeclaration(SourceLocation AtProtocolLoc,
ObjCProtocolDecl *PDecl = ObjCProtocols[P];
if (!PDecl) { // Not already seen?
// FIXME: Pass in the location of the identifier!
PDecl = new ObjCProtocolDecl(AtProtocolLoc, 0, P, true);
PDecl = ObjCProtocolDecl::Create(Context, AtProtocolLoc, 0, P, true);
ObjCProtocols[P] = PDecl;
}