SM = &Context->SourceMgr;
MainFileID = mainFileID;
MsgSendFunctionDecl = 0;
+ GetClassFunctionDecl = 0;
Rewrite.setSourceMgr(Context->SourceMgr);
}
// Look for built-in declarations that we need to refer during the rewrite.
if (FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
- if (FD->getIdentifier() == &Context->Idents.get("objc_msgSend"))
+ if (strcmp(FD->getName(), "objc_msgSend") == 0)
MsgSendFunctionDecl = FD;
- else if (FD->getIdentifier() == &Context->Idents.get("objc_getClass"))
+ else if (strcmp(FD->getName(), "objc_getClass") == 0)
GetClassFunctionDecl = FD;
}
if (SM->getDecomposedFileLoc(Loc).first == MainFileID)
// Get the start location and compute the semi location.
SourceLocation startLoc = ClassDecl->getLocation();
const char *startBuf = SM->getCharacterData(startLoc);
- const char *semiPtr = startBuf;
- while (semiPtr && (*semiPtr != ';')) semiPtr++;
+ const char *semiPtr = strchr(startBuf, ';');
// Translate to typedef's that forward reference structs with the same name
// as the class. As a convenience, we include the original declaration
// Predefine ObjC primitive functions, traditionally declared in
// <objc/objc-runtime.h>. Unlike the declarations above, we don't protect
// these with a header guard (since multiple identical function declarations
- // don't result in an error.
+ // don't result in an error. FIXME: don't predefine these...
ObjcType = "OBJC_EXPORT id objc_getClass(const char *name);\n";
Buf.insert(Buf.end(), ObjcType, ObjcType+strlen(ObjcType));
ObjcType = "OBJC_EXPORT id objc_getMetaClass(const char *name);\n";