diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-11-18 00:28:11 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-11-18 00:28:11 +0000 |
commit | 321c22f1c4271c3d9a3d4d3fc18847f948ab595b (patch) | |
tree | 293c5da5b500bcf3bfcda607fdb3dcb36bc377f1 /include/clang | |
parent | f74a419b7219d050e1e40ff920d30832e903e5a8 (diff) |
Add SourceLocations to ObjCClassDecl for the class identifiers referenced by @class.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89170 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang')
-rw-r--r-- | include/clang/AST/DeclObjC.h | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/include/clang/AST/DeclObjC.h b/include/clang/AST/DeclObjC.h index bcd28eab03..0d4089623d 100644 --- a/include/clang/AST/DeclObjC.h +++ b/include/clang/AST/DeclObjC.h @@ -718,10 +718,22 @@ public: /// @class NSCursor, NSImage, NSPasteboard, NSWindow; /// class ObjCClassDecl : public Decl { - ObjCList<ObjCInterfaceDecl> ForwardDecls; +public: + class ObjCClassRef { + ObjCInterfaceDecl *ID; + SourceLocation L; + public: + ObjCClassRef(ObjCInterfaceDecl *d, SourceLocation l) : ID(d), L(l) {} + SourceLocation getLocation() const { return L; } + ObjCInterfaceDecl *getInterface() const { return ID; } + }; +private: + ObjCClassRef *ForwardDecls; + unsigned NumDecls; ObjCClassDecl(DeclContext *DC, SourceLocation L, - ObjCInterfaceDecl *const *Elts, unsigned nElts, ASTContext &C); + ObjCInterfaceDecl *const *Elts, const SourceLocation *Locs, + unsigned nElts, ASTContext &C); virtual ~ObjCClassDecl() {} public: @@ -730,17 +742,17 @@ public: static ObjCClassDecl *Create(ASTContext &C, DeclContext *DC, SourceLocation L, ObjCInterfaceDecl *const *Elts = 0, + const SourceLocation *Locs = 0, unsigned nElts = 0); - typedef ObjCList<ObjCInterfaceDecl>::iterator iterator; - iterator begin() const { return ForwardDecls.begin(); } - iterator end() const { return ForwardDecls.end(); } - unsigned size() const { return ForwardDecls.size(); } + typedef const ObjCClassRef* iterator; + iterator begin() const { return ForwardDecls; } + iterator end() const { return ForwardDecls + NumDecls; } + unsigned size() const { return NumDecls; } /// setClassList - Set the list of forward classes. - void setClassList(ASTContext &C, ObjCInterfaceDecl*const*List, unsigned Num) { - ForwardDecls.set(List, Num, C); - } + void setClassList(ASTContext &C, ObjCInterfaceDecl*const*List, + const SourceLocation *Locs, unsigned Num); static bool classof(const Decl *D) { return D->getKind() == ObjCClass; } static bool classof(const ObjCClassDecl *D) { return true; } |