diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2009-10-20 12:47:54 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2009-10-20 12:48:23 +0200 |
commit | 56f755efe8f5c367b284347c73b9221ca0160de1 (patch) | |
tree | f3784a2c0ac4082ed894eef233ca89556b966ee5 /src/shared/cplusplus | |
parent | c5cf70c6b8addf392c692f6a3d8eb5f1b900e167 (diff) | |
download | qt-creator-56f755efe8f5c367b284347c73b9221ca0160de1.tar.gz |
Changed ObjC context keyword comparison to use identifiers.
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r-- | src/shared/cplusplus/CheckDeclaration.cpp | 18 | ||||
-rw-r--r-- | src/shared/cplusplus/Control.cpp | 43 | ||||
-rw-r--r-- | src/shared/cplusplus/Control.h | 10 |
3 files changed, 61 insertions, 10 deletions
diff --git a/src/shared/cplusplus/CheckDeclaration.cpp b/src/shared/cplusplus/CheckDeclaration.cpp index 5a0142f384..6a81784360 100644 --- a/src/shared/cplusplus/CheckDeclaration.cpp +++ b/src/shared/cplusplus/CheckDeclaration.cpp @@ -700,26 +700,26 @@ bool CheckDeclaration::visit(ObjCPropertyDeclarationAST *ast) if (!attrAst) continue; - const char *attrName = spell(attrAst->attribute_identifier_token); - if (!strcmp("getter", attrName)) { + Identifier *attrId = identifier(attrAst->attribute_identifier_token); + if (attrId == control()->objcGetterId()) { if (checkPropertyAttribute(attrAst, propAttrs, Getter)) { // TODO: find method declaration for getter } - } else if (!strcmp("setter", attrName)) { + } else if (attrId == control()->objcSetterId()) { if (checkPropertyAttribute(attrAst, propAttrs, Setter)) { // TODO: find method declaration for setter } - } else if (!strcmp("readwrite", attrName)) { + } else if (attrId == control()->objcReadwriteId()) { checkPropertyAttribute(attrAst, propAttrs, ReadWrite); - } else if (!strcmp("readonly", attrName)) { + } else if (attrId == control()->objcReadonlyId()) { checkPropertyAttribute(attrAst, propAttrs, ReadOnly); - } else if (!strcmp("assign", attrName)) { + } else if (attrId == control()->objcAssignId()) { checkPropertyAttribute(attrAst, propAttrs, Assign); - } else if (!strcmp("retain", attrName)) { + } else if (attrId == control()->objcRetainId()) { checkPropertyAttribute(attrAst, propAttrs, Retain); - } else if (!strcmp("copy", attrName)) { + } else if (attrId == control()->objcCopyId()) { checkPropertyAttribute(attrAst, propAttrs, Copy); - } else if (!strcmp("nonatomic", attrName)) { + } else if (attrId == control()->objcNonatomicId()) { checkPropertyAttribute(attrAst, propAttrs, NonAtomic); } } diff --git a/src/shared/cplusplus/Control.cpp b/src/shared/cplusplus/Control.cpp index 908bded134..fee0ee3d94 100644 --- a/src/shared/cplusplus/Control.cpp +++ b/src/shared/cplusplus/Control.cpp @@ -89,7 +89,16 @@ public: : control(control), translationUnit(0), diagnosticClient(0) - { } + { + objcGetterId = control->findOrInsertIdentifier("getter"); + objcSetterId = control->findOrInsertIdentifier("setter"); + objcReadwriteId = control->findOrInsertIdentifier("readwrite"); + objcReadonlyId = control->findOrInsertIdentifier("readonly"); + objcAssignId = control->findOrInsertIdentifier("assign"); + objcRetainId = control->findOrInsertIdentifier("retain"); + objcCopyId = control->findOrInsertIdentifier("copy"); + objcNonatomicId = control->findOrInsertIdentifier("nonatomic"); + } ~Data() { @@ -577,6 +586,16 @@ public: std::vector<ObjCForwardClassDeclaration *> objcForwardClassDeclarations; std::vector<ObjCForwardProtocolDeclaration *> objcForwardProtocolDeclarations; std::vector<ObjCMethod *> objcMethods; + + // ObjC context keywords: + Identifier *objcGetterId; + Identifier *objcSetterId; + Identifier *objcReadwriteId; + Identifier *objcReadonlyId; + Identifier *objcAssignId; + Identifier *objcRetainId; + Identifier *objcCopyId; + Identifier *objcNonatomicId; }; Control::Control() @@ -766,4 +785,26 @@ ObjCForwardProtocolDeclaration *Control::newObjCForwardProtocolDeclaration(unsig ObjCMethod *Control::newObjCMethod(unsigned sourceLocation, Name *name) { return d->newObjCMethod(sourceLocation, name); } +Identifier *Control::objcGetterId() const +{ return d->objcGetterId; } + +Identifier *Control::objcSetterId() const +{ return d->objcSetterId; } + +Identifier *Control::objcReadwriteId() const +{ return d->objcReadwriteId; } + +Identifier *Control::objcReadonlyId() const +{ return d->objcReadonlyId; } + +Identifier *Control::objcAssignId() const +{ return d->objcAssignId; } + +Identifier *Control::objcRetainId() const +{ return d->objcRetainId; } + +Identifier *Control::objcCopyId() const +{ return d->objcCopyId; } +Identifier *Control::objcNonatomicId() const +{ return d->objcNonatomicId; } diff --git a/src/shared/cplusplus/Control.h b/src/shared/cplusplus/Control.h index 615eab38f8..d4db273e43 100644 --- a/src/shared/cplusplus/Control.h +++ b/src/shared/cplusplus/Control.h @@ -169,6 +169,16 @@ public: /// Creates a new Objective-C method symbol. ObjCMethod *newObjCMethod(unsigned sourceLocation, Name *name = 0); + // Objective-C specific context keywords. + Identifier *objcGetterId() const; + Identifier *objcSetterId() const; + Identifier *objcReadwriteId() const; + Identifier *objcReadonlyId() const; + Identifier *objcAssignId() const; + Identifier *objcRetainId() const; + Identifier *objcCopyId() const; + Identifier *objcNonatomicId() const; + Identifier *findIdentifier(const char *chars, unsigned size) const; Identifier *findOrInsertIdentifier(const char *chars, unsigned size); |