summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2009-10-20 12:47:54 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2009-10-20 12:48:23 +0200
commit56f755efe8f5c367b284347c73b9221ca0160de1 (patch)
treef3784a2c0ac4082ed894eef233ca89556b966ee5 /src/shared/cplusplus
parentc5cf70c6b8addf392c692f6a3d8eb5f1b900e167 (diff)
downloadqt-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.cpp18
-rw-r--r--src/shared/cplusplus/Control.cpp43
-rw-r--r--src/shared/cplusplus/Control.h10
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);